Я пытаюсь настроить свой NAS, запускаю openfiler и задаюсь вопросом, почему у меня относительно низкая скорость чтения с 4 дисков WD RE3 в RAID 5.
РЕДАКТИРОВАТЬ: Обратите внимание, я говорю о скорости чтения с буферизованного диска, а не о скорости кэширования.
РЕДАКТИРОВАТЬ: изменено форматирование, чтобы было ясно, что есть два набора вывода.
Когда я запускаю hdparm на мета-устройстве, я получаю ожидаемый уровень производительности, снижаю громкость и получаю треть скорости!
Кто-нибудь знает, почему? LVM настолько плох?
Декан
Мета-устройство / dev / md0 результаты
[root@nas2 etc]# hdparm -tT /dev/md0 /dev/md0: Timing cached reads: 4636 MB in 2.00 seconds = 2318.96 MB/sec Timing buffered disk reads: 524 MB in 3.01 seconds = 174.04 MB/sec
Vol group / dev / mapper / vg1-vol1 результаты
[root@nas2 etc]# hdparm -tT /dev/mapper/vg1-vol1 /dev/mapper/vg1-vol1: Timing cached reads: 4640 MB in 2.00 seconds = 2320.28 MB/sec Timing buffered disk reads: 200 MB in 3.01 seconds = 66.43 MB/sec
Изменить: см. Раздел на странице руководства hdparm, в котором говорится, что это совершенно допустимый тест на производительность последовательного чтения, и это проблема, которую я пытаюсь решить.
-t Perform timings of device reads for benchmark and comparison purposes. For meaningful results, this operation should be repeated 2-3 times on an otherwise inactive system (no other active processes) with at least a couple of megabytes of free memory. This displays the speed of reading through the buffer cache to the disk without any prior caching of data. This measurement is an indication of how fast the drive can sustain sequential data reads under Linux, without any filesystem overhead. To ensure accurate measurements, the buffer cache is flushed during the processing of -t using the BLKFLSBUF ioctl. If the -T flag is also specified, then a correction factor based on the outcome of -T will be incorporated into the result reported for the -t operation.
Настройки упреждающего чтения по умолчанию для LVM: действительно пессимистичный. Пытаться blockdev --setra 8192 /dev/vg1/vol1
и посмотрите, до чего это повысит вашу производительность LVM. LVM всегда будет снижать производительность; мы измеряем его на правильно настроенных системах примерно на 10% от производительности базового блочного устройства.
У меня нет хорошего объяснения, но я могу подтвердить результаты.
Тестирование RAID (raid5, 4x1.5TB накопители)
root@enterprise:# hdparm -tT /dev/md2
/dev/md2:
Timing cached reads: 2130 MB in 2.00 seconds = 1065.81 MB/sec
Timing buffered disk reads: 358 MB in 3.00 seconds = 119.15 MB/sec
root@enterprise:# hdparm -tT /dev/md2
/dev/md2:
Timing cached reads: 2168 MB in 2.00 seconds = 1084.54 MB/sec
Timing buffered disk reads: 358 MB in 3.01 seconds = 119.10 MB/sec
тест тома, который использует md2 как физическое устройство.
root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
Timing cached reads: 2078 MB in 2.00 seconds = 1039.29 MB/sec
Timing buffered disk reads: 176 MB in 3.03 seconds = 58.04 MB/sec
root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
Timing cached reads: 2056 MB in 2.00 seconds = 1028.06 MB/sec
Timing buffered disk reads: 154 MB in 3.03 seconds = 50.81 MB/sec
Я сделал изменение предложил womble и увидел такие результаты.
root@enterprise:# blockdev --setra 8192 /dev/mapper/vg2-data
root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
Timing cached reads: 2106 MB in 2.00 seconds = 1053.82 MB/sec
Timing buffered disk reads: 298 MB in 3.00 seconds = 99.26 MB/sec
root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
Timing cached reads: 2044 MB in 2.00 seconds = 1022.25 MB/sec
Timing buffered disk reads: 280 MB in 3.03 seconds = 92.45 MB/sec
Убедитесь, что вы сравниваете яблоки с яблоками.
hdparm -t
читает с начала устройства, что также является самой быстрой частью вашего диска, если вы отдаете ему целый диск (и на нем вращаются пластины).
Убедитесь, что вы сравниваете его с LV с начала диска.
Чтобы увидеть отображение, используйте pvdisplay -m
.
(ладно, конечно, разница в цифрах может быть незначительной. Но подумайте об этом :)
Вы можете выяснить, где hdparm проводит свое время, с помощью blktrace (если он находится в режиме ввода-вывода) или oprofile (если он находится в процессоре). Также поможет знание настройки LVM (pvdisplay, vgdisplay, lvdisplay).
Рабочая нагрузка, созданная с помощью hdparm -T, не является репрезентативной практически для любого случая использования, кроме потокового чтения из одного большого файла. Кроме того, если производительность вызывает беспокойство, не используйте raid5.