нагрузка на hdd затормаживает видео по сети

Система:
2.6.29-gentoo-r5 #1 SMP Mon Jun 8 22:57:33 YEKST 2009 x86_64 AMD Phenom(tm) II X3 720 Processor AuthenticAMD GNU/Linux
Памяти 8gb, чипсет 780G, видео ati x600 и ati x300 с модулем radeon, сеть встроенная - r8169, гигабит.

Сценарий:
1) включаем видео по сети
local$ ssh -Y tvbox
tvbox$ mplayer -vf kerndeint tv:// -tv driver=v4l2:device=/dev/video0:chanlist=europe-east:norm=PAL:channel=70
Отъедается около 94mbit/sec, сеть гигабитная, встроенная; ssh - 15 %cpu; X - 9% cpu.

2) открываем pdf-ку несчастным adobe reader 8
Переход по линку на pdf в opera, open with adobe reader 8.
Это убожество при запуске нагружает диск процессом ld-linux.so.2 на несколько секунд, после чего показывается и работает.
В эти секунды видео стоит.

3) повторяем пункт 2
Тормозов нет, т.к. диск закешировался.

4) сбрасываем кеш sudo sh -c "echo 1 > /proc/sys/vm/drop_caches", снова пункт 2
Тормоза есть

Не вижу объяснения тормозов видео - ядра 3, памяти много, воспроизведение видео ест сеть и графику, а reader ест диск (и проц, наверное).
Первый вопрос - какие опции ядра копать?
Второй - зачем может ld-linux.so.2 несколько секунд шарить по диску?

Update: добавил пункт 4; сразу после reboot не воспроизвелось, жду нового проявления, т.к. бывало и раньше, вероятно начинает воспроизводится после обновления каких-нибудь библиотек/после долгой работы/чего-то еще не сильно необычного.

afaik здесь проблема с cpu

afaik здесь проблема с cpu впадающем в wait статус на время сильных дисковых io.
решается альтернативными шедулерами (сейчас дефолтный cfq, есть bfq, которого правда в дефолтном и гентушном ядре нет)

Проверил встроенные noop,

Проверил встроенные noop, anticipatory, deadline и cfq на диске с корнем - тормоз примерно одинаковый.
Спасибо за наводку, bfq тоже попробую.

Update: удалённо помониторил активность, поскольку локально графический терминал виснет как и видео
top - wait прыгает примерно до 31% (то есть wait-а на одно ядро)
iotop - читается 2.7mbyte/s
iostat - tps прыгает до 330
винт IDE, Hitachi T7K250

не подскажете где про

не подскажете где про шедулеры побольше узнать можно?

скрытный секс :)

Судя по всему проблема в том,

Судя по всему проблема в том, что swap раздел находится на том же диске.
Что делать и как проверять понятно, по результатам отпишусь :)

Причем swap, если памяти

При чем swap, если памяти много?

Видел где-то в lkml сообщения

Видел где-то в lkml сообщения о том, что ядро (некоторые "бажные" версии) может при сильном io load начать вытеснять в swap образы программ (в моем случае X или граф. терминал).
Второе соображение - другие ресурсы не заняты и/или не конфликтуют, а винт забит нагрузкой в потолок и на нём кроме корня живёт swap, любой доступ к которому от этого сильно затормаживается.
Памяти действительно много, и в любом случае объём своппинга должен быть маленьким, но пока склоняюсь именно к этой гипотезе.

Update: ссылки на lkml
http://osdir.com/ml/linux-kernel/2009-05/msg06997.html
http://osdir.com/ml/linux-kernel/2009-05/msg07020.html

Начало снова

Начало снова воспроизводиться, пока в меньшем масштабе - секунда или меньше замерзания.
swapoff -a - особо не влияет, значит правда не swap, по крайне мере не только он
твик запуска acroread (ACRO_ENABLE_FONT_CONFIG 0) отсюда http://forums.adobe.com/message/1784155#1784155 - на наличие лага не влияет, но немного сокращает его
Подожду пока достигнет нескольких секунд, можно будет детальнее промониторить что-нибудь.

Пока писал дождался - попереключал планировщики и получил свой тормоз в несколько секунд :)) swapoff по-прежнему не влияет, ACRO_ENABLE_FONT_CONFIG 0 делает лаг коротким.
Запустил strace -c -tt -o output.txt до и после фикса acroread

До:
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
99.78 0.010012 278 36 18 wait4
0.22 0.000022 1 26 8 stat
...
System call usage summary for 32 bit mode:
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
59.25 0.000868 0 13250 1727 read
17.47 0.000256 2 167 munmap
15.22 0.000223 5 46 1 writev
...

После
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
52.78 0.000019 1 36 18 wait4
47.22 0.000017 0 51 read
...
0.00 0.000000 0 388 mmap2
...
100.00 0.001465 36039 2776 total

System call usage summary for 32 bit mode:
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
28.64 0.000313 0 6924 3681 open
26.99 0.000295 0 631 26 readv
16.47 0.000180 0 1092 time
...
3.29 0.000036 0 13910 2339 read
...
0.00 0.000000 0 3281 mmap2
...
100.00 0.001093 56064 6239 total

В целом пока ничего интересного

Следующая гипотеза - DoS на X

Следующая гипотеза - DoS на X (font) server. Не понятно, почему он однопоточный (это правда?) и как чинить (может и правда планировщиком?.. если там есть асинхронность обработки запросов).
В пользу гипотезы
- mpd во время тормозов играет без пауз
- в выводе strace есть примерно 1500 read-ов на socket (/tmp/.X11-unix/X0), задержки порядка нескольких msec (время выполнения read(32byte)=EAGAIN, poll, read(32byte)=ok), секунды набираются в принципе.

Проверка N1:
1) на проблемной машине в граф. терминале top -d 0.1
2) с другой машины ssh -Y на неё, оттуда ssh -Y tvbox, mplayer
3) на проблемной машине сброс кешей и acroread some.pdf
top тормозит, а видео играет, значит машина успевает в это время пробрасывать трафик.

Проверка N2
1, 2) так же
3) с той же удалённой снова ssh -Y на проблемную, в этой сессии сброс кеша, запуск acroread
внезапно появляется средних размеров пушной зверёк:
- вместо музыки в ушах на проблемной машине просто высокочастотный писк
- полный зависон её же, ноль внимания на input и ping.

Проверка N3
То же, но без mplayer. Не упало, и потормозила, кажется, удалённвя машина.

Проверять, пишется ли что-либо в локальную консоль в сценарии N2 не спешу :))

Update: забыл написать версии
xorg-server-1.3.0.0-r6 (у меня 2 видеокарты, а в более новых версиях поддержка multicard сломана) + xineramainfo patch (для корректной работы xinerama + (non-rectangular) mergedFB)
x11-libs/libXft-2.1.13
acroread-8.1.4

Предлагаю включить

Предлагаю включить CONFIG_PREEMPT. А вместо убого Adobe Reader, который использует кучу 32-битных библиотек (из-за чего ld-linux так долго и работает), можно использовать [evince xpdf kpdf whatever].

Спасибо, CONFIG_PREEMPT

Спасибо, CONFIG_PREEMPT попробую, сейчас он не установлен.
Adobe убог и альтернативы стоят, но хочется понять чем именно он курочит систему :) Не исключено, что по той же причине есть не такие яркие задержки, ну и из интереса, конечно.
Уже разобрался, что название "ld-linux.so.2" в топе потому, что реальная строка запуска acroread такая:
/lib/ld-linux.so.2 /opt/Adobe/Reader8/Reader/intellinux/bin/acroread
Чтобы проверить, что проблема не в накладных расходах на динамическую линковку, попробую перед запуском зачитать в память все поттягиваемые библиотеки. Но это сомнительный вариант, их всего пара десятков и общий объём метров 100, не сходится с наблюдаемой нагрузкой на диск.

Зачитывание .so-шек, видных в

Зачитывание .so-шек, видных в strace не помогло, причём их оказалось всего 44M.

CONFIG_PREEMPT - так же не помог, выбирал "low latency desktop"
$ zgrep PREE /proc/config.gz
# CONFIG_PREEMPT_RCU is not set
# CONFIG_PREEMPT_RCU_TRACE is not set
CONFIG_PREEMPT_NOTIFIERS=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_DEBUG_PREEMPT=y
# CONFIG_PREEMPT_TRACER is not set

>>но хочется понять чем

>>но хочется понять чем именно он курочит систему

ИМХО неоправданной нагрузкой на проц. Вам же top wait показал 31%. Тоесть треть простоя. Плюс значительные потери на исполнение 32х разрядного кода вперемешку с 64 разрядным. При прокрутке видео основной тормоз в пропускной способности шины. Данные хоть и с сети, но как-то должны попасть на ЦПУ для распаковки, а затем их по той же шине послать в видеокарту. Интересно, что в момент тормозов показывает консолька мплеера, и пробовали ли вы отбрасывать фреймы опцией -framedrop. Ну и плюс к тому видео у Вас радеон. Автор мплеера их как то недолюбливает. Да и прикрутить ускорение на радеон покамест штука нетривиалная( иксы последние, куча библиотек и опций в xorg.conf, проблемы с одновременным 2 и 3d ускорением, особенности различных моделей плат и много чего еще).

mplayer ничего не пишет в

mplayer ничего не пишет в консоль, видимо обратной связи с удалённым от него X не предусмотрено :)

Вручную так накрутить wait на несколько секунд пока не вышло, но добиться небольшого лага без acroread получилось.
Вытащил все открываемые acroread файлы через strace, добавил в конец всё из /usr/share/fonts и сделал большой скрипт вида
file some_file > /dev/null&
...
tps один раз за время выполнения существенно подскакивал, а видео тормознуло, но меньше, чем на секунду.

По поводу radeon и эмуляции попробую поиграться на 32-битном ноуте с intel-овским видео.

Есть идеи чем нагрузить шину или хотя бы посмотреть насколько она грузится? :)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".