SSD становится медленнее для больших файлов, это нормально?

SSD становится медленнее для больших файлов, это нормально?

Запись больших файлов на мой основной SSD, похоже, происходит медленно, и я пытаюсь найти причину. Материнская плата — ASUS Maximus VIII Hero, и у меня подключены два SSD:

  1. Samsung SSD 840 EVO 120 ГБ --> sda
  2. Samsung SSD 840 EVO 500 ГБ --> sdb

Вот вывод fdisk -l

Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A3DB9022-5AE0-4BF4-BCA0-E0DAF7BB2106

Device         Start       End   Sectors  Size Type
/dev/sda1       2048   1050623   1048576  512M EFI System
/dev/sda2    1050624 167569407 166518784 79.4G Linux filesystem
/dev/sda3  167569408 234440703  66871296 31.9G Linux swap

Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Итак, 120 ГБ — это мой системный диск, а 500 ГБ — это вторичный диск. Если я пишу на SSD с помощью dd, я получаю следующие результаты:

ПДД:

~$ dd if=/dev/zero of=/tmp/dd_performance bs=1G count=1 oflag=direct
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.1183 s, 507 MB/s

~$ dd if=/dev/zero of=/tmp/dd_performance bs=1G count=10 oflag=direct
10737418240 bytes (11 GB, 10 GiB) copied, 296.29 s, 36.2 MB/s

сдб:

~$ dd if=/dev/zero of=/mnt/temp_data/dd_performance bs=1G count=1 oflag=direct
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.13052 s, 504 MB/s

~$ dd if=/dev/zero of=/mnt/temp_data/dd_performance bs=1G count=10 oflag=direct
10737418240 bytes (11 GB, 10 GiB) copied, 21.1424 s, 508 MB/s

Итак, для файла размером 1 ГБ я получаю очень похожие результаты. Но запись файла размером 10 ГБ в sda становится мучительно медленной.

я нашелпохожие вопросыно думал, что oflag=direct должен пропускать все кэши и писать напрямую. Во время выполнения у меня было 25 ГБ свободной памяти.

Единственное объяснение, которое я придумал, это то, что на sda гораздо больше файлов (системный диск) и SSD, вероятно, приходится больше работать, чтобы разместить на нем файл размером 10 ГБ, чем на sdb. Нормально ли такое поведение? Есть ли лучший тест, который я мог бы выполнить?

решение1

Благодаря комментарию Дэниела Б. я уверен, что такое поведение нормально.

Решение

У двух дисков очень разные показатели TurboWrites, и при записи больших файлов ожидается падение. Для меньшего диска падение просто происходит раньше и намного больше. Кроме того, размер блока (1G), который я использовал, не является оптимальным для тестов. Использование более разумного 1M дает лучшие результаты.

Заключение

Я все равно буду использовать меньший диск для своих системных разделов, так как там много маленьких файлов, и они работают быстро. Но я перенесу две виртуальные машины, которые я также запускаю на этом SSD, на больший, так как я часто делаю резервные копии и копирую их.

Связанный контент