Не уверен, с чего начать, но я постоянно вижу эту странную проблему на моем Ubuntu Hardy.
Система - Core i7-920 с дисками RAID10 и 3Гб оперативной памяти, хотя, может быть, это не так. На нем есть несколько общих ресурсов Samba. Каждый раз, когда кто-то загружает что-то большое (несколько гигов) в общую папку, отзывчивость системы значительно (заметно) падает.
Файловая система: ReiserFS (v3)
И vmstat, и top не показывают значительного времени ожидания для ввода-вывода, очень мало блокирующих процессов (например, 2 для четырехъядерной системы) и случайные записи ~ 13000 блоков на диск. Средн. нагрузка постоянно ниже 0,5 (опять же, система четырехъядерная с включенным HT, поэтому у нее 8 логических ядер).
Однако даже когда я перемещаю курсор мыши, он сильно тормозит ...
вот типичный вывод vmstat во время интенсивного сетевого ввода-вывода:
vmstat -n 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 419268 93724 48052 2071148 0 0 9 3 11 4 1 1 95 2
1 0 419268 91560 48052 2073292 0 0 0 0 2396 5716 5 1 94 0
0 0 419268 89636 48056 2075164 0 0 0 0 2173 5537 2 1 97 0
2 0 419268 87836 48056 2077136 0 0 0 0 2057 5216 1 1 98 0
1 0 419268 85716 48060 2078812 0 0 0 10104 2108 5261 2 1 97 0
0 0 419268 91940 48060 2071748 0 0 0 0 2221 6153 2 1 97 0
2 0 419268 90368 48064 2073640 0 0 0 0 2104 5384 1 1 98 0
0 0 419268 89000 48064 2075092 0 0 0 0 1781 4700 1 1 98 0
1 0 419268 87140 48064 2076640 0 0 0 0 2045 5104 1 1 98 0
1 1 419268 85584 48068 2078240 0 0 0 10112 1945 4343 2 1 91 7
0 0 419268 92668 48068 2071764 0 0 0 16 2064 5197 2 1 96 1
Попробуйте бежать iotop
- он должен вам кое-что показать.
Вы видите, что много прерываний (System - in) и переключений контекста (System - cs) во время нормальной работы? Интересно из-за вашего описания того, что даже курсор мыши становится медленным. Если есть проблема, из-за которой ваша система будет перегружена прерываниями под нагрузкой, это приведет к замедлению всего.
И просто чтобы сделать общий снимок в темноте, есть ли в / var / log / dmesg что-нибудь об ошибках или тайм-аутах с ваших дисков или рейдовых устройств?
Изменить 1:
Сегодня утром я наткнулся на статью, которая действительно походила на проблему, которую вы видите на своей коробке. Грег Смит проводит анализ сервера, который, кажется, блокирует запись на диск на длительные периоды времени. Его особый метод расследования включает выполнение команды:
while [ 1 ]; do cat /proc/meminfo; sleep 1; done
и глядя на размер кэша «Обратная запись:» до и во время периода, когда кажется, что система зависает. Если кэш обратной записи действительно заполняется (примерно> 40%) и заставляет систему приостанавливать запись во время очистки, то Грег предлагает некоторую настройку ОС, которая может смягчить проблему. Запись в блоге Грега можно найти по адресу http://notemagnet.blogspot.com/2008/08/linux-write-cache-mystery.html
Вы можете поэкспериментировать с планировщиками ввода-вывода. Планировщиком ввода-вывода по умолчанию является CFQ, который очень хорошо работает для настольных компьютеров, но по моему опыту, для файловых серверов Deadline обычно работает лучше. Вы можете изменить планировщик ввода-вывода на лету, чтобы вы могли легко экспериментировать с ним, чтобы увидеть, что лучше всего работает в вашей ситуации.
Чтобы вывести список доступных планировщиков io, используйте эту команду.
cat /sys/block/sdb/queue/scheduler
Это должно вернуться noop anticipatory deadline [cfq]
Чтобы изменить ваш планировщик на крайний срок, используйте следующую команду на соответствующем устройстве.
sudo echo "deadline" > /sys/block/sdb/queue/scheduler
Я не уверен, происходит ли это в Linux, но в Windows передача Samba по высокоскоростной сети может опережать скорость дискового ввода-вывода, а поскольку некоторые более ранние версии Windows имеют очень неумное сетевое кэширование, вы можете получить очень большой пакет данных в вашей памяти в буферах, ожидающих записи на диск. Это часто убивает отзывчивость в XP и более ранних системах (возможно, Vista тоже, IDK, я никогда не использовал ее существенно).
Я хочу сказать, что ReiserFS имеет единственную блокировку и по этой причине не очень подходит для большого рейда (много дисков). Но это было давно, поэтому я могу ошибаться.
Я подозреваю, что изменение планировщика мне немного поможет.