У меня есть сервер, который экспортирует домашние каталоги через NFS. Они находятся на программном RAID1 (/ dev / sdb и / dev / sdc), а ОС - на / dev / sda. Я заметил, что мой %iowait
как сообщает top
и sar
относительно высоки (по сравнению с остальными серверами). Значения колеблются между 5-10%, а для других серверов (которые более загружены, чем этот) то же самое, что и 0-1%. Так называемый пользовательский опыт падает, когда %iowait
достигает значений выше 12%. Затем возникает задержка.
У меня в логах ошибок дисков нет. Я бы не хотел играть с дисками методом проб и ошибок.
Как мне узнать, какое устройство (/ dev / sda, / dev / sdb или / dev / sdc) является узким местом?
Спасибо!
Изменить: я использую Ubuntu 9.10 и уже имею iostat
установлены. Меня не интересуют вопросы, связанные с NFS, я больше интересуюсь тем, как определить, какое устройство замедляет работу системы. NFS не загружается, у меня доступно 32 потока, результат
grep th /proc/net/rpc/nfsd
th 32 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
Edit2: Вот часть iostat -x 1
вывод (надеюсь, я не нарушаю здесь какие-то правила):
avg-cpu: %user %nice %system %iowait %steal %idle
45.21 0.00 0.12 4.09 0.00 50.58
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 21.00 0.00 368.00 0.00 17.52 0.17 8.10 6.67 14.00
sdb 0.00 6.00 0.00 6.00 0.00 96.00 16.00 0.00 0.00 0.00 0.00
sdc 0.00 6.00 0.00 6.00 0.00 96.00 16.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 21.00 0.00 368.00 0.00 17.52 0.17 8.10 6.67 14.00
dm-2 0.00 0.00 0.00 12.00 0.00 96.00 8.00 0.00 0.00 0.00 0.00
drbd2 0.00 0.00 0.00 12.00 0.00 96.00 8.00 5.23 99.17 65.83 79.00
avg-cpu: %user %nice %system %iowait %steal %idle
45.53 0.00 0.24 6.56 0.00 47.68
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 1.00 23.00 2.00 424.00 24.00 17.92 0.23 9.20 8.80 22.00
sdb 0.00 32.00 0.00 10.00 0.00 336.00 33.60 0.01 1.00 1.00 1.00
sdc 0.00 32.00 0.00 10.00 0.00 336.00 33.60 0.01 1.00 1.00 1.00
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 23.00 0.00 424.00 0.00 18.43 0.20 8.70 8.70 20.00
dm-2 0.00 0.00 0.00 44.00 0.00 352.00 8.00 0.30 6.82 0.45 2.00
drbd2 0.00 0.00 0.00 44.00 0.00 352.00 8.00 12.72 80.68 22.73 100.00
avg-cpu: %user %nice %system %iowait %steal %idle
44.11 0.00 1.19 10.46 0.00 44.23
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 637.00 19.00 16.00 432.00 5208.00 161.14 0.34 9.71 6.29 22.00
sdb 0.00 31.00 0.00 13.00 0.00 352.00 27.08 0.00 0.00 0.00 0.00
sdc 0.00 31.00 0.00 13.00 0.00 352.00 27.08 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 20.00 651.00 456.00 5208.00 8.44 13.14 19.58 0.33 22.00
dm-2 0.00 0.00 0.00 42.00 0.00 336.00 8.00 0.01 0.24 0.24 1.00
drbd2 0.00 0.00 0.00 42.00 0.00 336.00 8.00 4.73 73.57 18.57 78.00
avg-cpu: %user %nice %system %iowait %steal %idle
46.80 0.00 0.12 1.81 0.00 51.27
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 16.00 0.00 240.00 0.00 15.00 0.14 8.75 8.12 13.00
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Какие столбцы наиболее актуальны для изучения? Какие ценности считаются вредными для здоровья? я полагаю await
и %util
те, кого я ищу. по моему мнению dm-1
является узким местом (это метаданные ресурса DRBD).
Двойное спасибо!
Edit3: Вот какова моя настройка:
sda
= ОС, без RAID. Устройства dm-0
и dm-1
находятся на нем, поскольку последний является устройством метаданных для ресурса DRBD (см. ниже). Обе dm-0
и dm-1
объемы LVM; drbd2 = dm-2 = sdb + sdc
-> это устройство RAID1, которое обслуживает домашние каталоги пользователей через NFS. Я не думаю, что это узкое место. Никакого LVM-тома здесь нет.
iostat -x 1
?
Мне сказали, что я должен расширить этот ответ, но пока я не знаю, что добавить. Вы не говорите, какой дистрибутив вы используете, поэтому я не могу указать вам способ установки iostat, если у вас его еще нет. Но я думаю, это то, о чем вы просите.
редактировать: рад видеть вывод iostat! На данный момент устройства sd [ab] имеют почти такие же цифры, как и в RAID-1, и ни одно из них не насыщено; ни sdc. drbd2, однако, есть; для чего это используется и как это может повлиять на производительность сервера в целом?
Редактировать 2: Я действительно не знаю, что предложить. Вы признаете, что drbd2 "обслуживает домашние каталоги пользователей через NFS", и говорите, что у вас проблема с задержкой сервера NFS. Вы получаете вывод iostat, который довольно убедительно говорит о том, что drbd2 является узким местом. Затем вы говорите, что «По моему мнению, dm-1 является узким местом» и «Я не думаю, что [drbd2] является узким местом». Мне не ясно, какие у вас есть доказательства, которые противоречат гипотезе о том, что drbd2 является узким местом, но было бы неплохо это увидеть.
Таким образом, чтение iostat поможет вам сузить круг вопросов, на каких дисках возникают проблемы с вводом-выводом, но я обнаружил, что отслеживание приложения, вызывающего проблемы с вводом-выводом, гораздо более полезно для реального улучшения ситуации. Для этого iotop великолепен:
И ваши / dev / sdb, и / dev / sdc имеют очень близкие значения коэффициента ожидания. / dev / sda имеет несколько большие числа, но как это может повлиять на производительность вашего RAID, если он не включен в него? Кстати, вы используете LVM для зеркалирования, не так ли?
Это активно используемый сервер NFS? Хороший способ узнать, является ли NFS узким местом, - это проверить, как работает процесс NFS и находятся ли какие-либо в состоянии ожидания.
grep th / proc / net / rpc / nfsd
th 128 239329954 363444.325 111999.649 51847.080 12906.574 38391.554 25029.724 24115.236 24502.647 0.000 520794.933
Первое число - это количество потоков, доступных для обслуживания запросов, а второе число - это количество раз, когда все потоки были необходимы. Остальные 10 чисел представляют собой гистограмму, показывающую, сколько секунд определенная часть потоков была занята, начиная с менее чем 10% потоков и заканчивая более чем 90% потоков. Если последние несколько чисел накопились достаточно долго, то вашему серверу, вероятно, требуется больше потоков.
Увеличьте количество потоков, используемых сервером, до 16, изменив RPCNFSDCOUNT = 16 в /etc/rc.d/init.d/nfs
Вы можете узнать больше на http://billharlan.com/pub/papers/NFS_for_clusters.html под заголовком «Серверные потоки».