У меня есть приложение для анализа данных, которое связано с процессором и выдает ~ 35 МБ / с данных на каждый поток выполнения.
Я пытаюсь выяснить, сколько потоков я могу запускать одновременно и иметь возможность записывать на диск, не заставляя каждый бесконечно ждать ввода-вывода.
я нашел этот ответ о том, как рассчитать производительность записи, которую я выполнил на моих 2 локальных дисках, SSD и 7200 об / мин HD.
Результаты следующие:
SSD:
$ time sh -c "dd if=/dev/zero of=testfile bs=1000k count=1k && sync"
1024+0 records in
1024+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 0.668421 s, 1.6 GB/s
real 0m3.549s
user 0m0.000s
sys 0m0.456s
С синхронизацией это 281 МБ / с.
HD:
$ time sh -c "dd if=/dev/zero of=testfile bs=1000k count=1k && sync"
1024+0 records in
1024+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 8.79985 s, 119 MB/s
real 0m10.122s
user 0m0.004s
sys 0m0.549s
С синхронизацией это 98 МБ / с.
Могу ли я сделать следующие выводы?
Запись результатов на SSD:
Таким образом, я мог одновременно запускать 8 потоков. (281/35 = 8)
Запись результатов на HD:
Следовательно, я мог одновременно запускать 2 потока. (281/35 = 2,8)
Есть ли другие соображения, которые мне нужно принять во внимание, например, скорость межсоединения и т. Д.? (Мои диски подключены с помощью SATA 3)
Если приведенный выше анализ верен, могу ли я добавить дополнительные диски, чтобы разрешить выполнение большего количества потоков? Если да, будут ли они совместно использовать межсоединение и, следовательно, ввести верхний предел из-за этого, и если да, то как я могу это рассчитать?)
При использовании жестких дисков необходимо учитывать время поиска. В действительности одновременная запись на жесткие диски, вероятно, будет очень медленной из-за постоянного поиска жесткого диска.
В общем, это неправильный способ оценивать таким образом возможную мощность программы. На производительность влияет так много факторов, что таким образом невозможно получить реальные цифры производительности.
Правильный способ - использовать научные методы, запустить их в системе, измерить производительность. Если производительность недостаточно высока, установите ее на новое оборудование и повторяйте, пока производительность не станет достаточно хорошей.
это вопрос имеет более подробную информацию об использовании научного метода.