
У меня есть диск объемом 500 ГБ, и я пытаюсь решить, повлияет ли его разделение на три раздела на производительность в Linux. То есть, если несколько потоков пишут в разные разделы на одном диске, - если первый поток пишет в раздел 1 на диске 1, должен ли второй поток ждать, чтобы записать в раздел 2 на том же диске?
решение1
Диск — это физическое устройство с физической головкой записи (не будем пока забывать о SSD). Он может записывать только в одно место за раз. Несколько потоков, пытающихся записать одновременно, будут конкурировать друг с другом и фактически замедлять общую скорость, поскольку головке приходится больше времени искать нужную позицию. Самая быстрая запись — одна длинная непрерывная справа в соседних секторах.
У SSD нет физического аспекта, но у них есть ограничения на скорость ввода-вывода. Добавление потоков не устраняет это основное узкое место, поэтому не увеличит скорость.
Все это предполагает, что данный поток готов писать на максимальной скорости. Если приложение зависит от какого-то другого ресурса (пользовательский ввод, сеть), то добавление потоков может заставить его писать быстрее, поскольку эти потоки выполняют больше работы по «постановке в очередь» данных для записи на диск.
решение2
Нет. Наоборот.Обычные магнитные жесткие диски наиболее производительны при записи в области диска, которые находятся близко друг к другу. Рассмотрим простой случай, когда записываются два больших файла, один раз в почти одну и ту же область диска, один раз в очень отдаленные части. В первом случае записывающая головка может двигаться практически непрерывно, во втором случае значительное время тратится на перемещение головки между двумя удаленными точками.
Обычные драйверы файловой системы уже высоко оптимизированы для принятия разумных решений о том, когда и где продолжать запись. Многие из этих оптимизаций теряются, если вы одновременно пишете в совершенно разные области диска, используя два экземпляра драйвера файловой системы, каждый из которых имеет свой собственный ограниченный обзор ожидающих записей.
Даже SSD (которые не тратят больше времени на обработку физического расстояния) работают лучше при записи больших областей за раз (охватывая только полные блоки вместо того, чтобы делать небольшие записи здесь, затем небольшие записи там). Поэтому можно ожидать, что одна файловая система будет работать лучше, чем несколько файловых систем на отдельных разделах, даже в случае SSD.
Если ваша идея для раздела также исходит из желания убедиться, что одна файловая система, будучи заполненной, не блокирует запись в другие (резервируя разное максимальное пространство для каждой папки) - есть решения для этого и для одной файловой системы. Ключевое слово, которое вы ищете в этом случае, этоквота.