LINUX.ORG.RU

Нехорошая интерактивность в линуксе (при дисковых операциях): что-нибудь можно сделать?


0

0

Наблюдается нехорошая особенность.

1. Бывает, что после записи большого объёма файлов, когда, по-видимому, ядро сбрасывает буферы на диск, наблюдается затык в интерактивной работе на примерно 2-3 секунды--невозможно ничего ввести в xterm и тому подобное (курсор мыши шевелится вроде нормально).

2. Когда активно используется своп, также могут наблюдаться затыки, даже курсор мыши дёргается. В зависимости от нагруженности, тормоза могут быть очень большими--вплоть до того, что система на какое-то время как бы "подвисает".

Конечно, этим наблюдением я не открыл америку. Но может всё же можно что-то улучшить, какие-нибудь параметры или патчи к ядру есть?

★★

Кстати, мой uname -a на домашнем компьютере сейчас такой: Linux blin2 2.6.16.4 #1 PREEMPT Wed Apr 12 01:33:17 MSD 2006 i686 Intel(R) Celeron(R) M processor 1.50GHz unknown GNU/Linux

В ядре 2.6 ещё более-менее, а вот что в 2.4 бывает--это вообще ужас. Как-то в свой монтекарловской программе я переборщил с ресурсами, слишком много памяти занял. (Система redhat 9/kernel 2.4.20-8.) Так вот, я пытался зайти в консоль, чтобы вырубить эту прогу и не мог! После ввода логина в "login: " система так долго соображала, что программа для логина прерывалась ещё до появления "Password: ", если же "Password: " появлялся и я вводил пароль, то за отведённое время всё равно не успевала отработать и прерывалась. Так что я даже залогиниться не мог! После двадцатиминутного ожидания пришлось нажать на кнопку Reset. А ведь это риск потери данных -- на этом компьютере мог крутиться чужой вычислительный процесс!

mr ★★
() автор топика

>что-нибудь можно сделать?

Поставвить SCSI.

>1. Бывает, что после записи большого объёма файлов, когда, по-видимому, ядро сбрасывает буферы на диск, наблюдается затык в интерактивной работе на примерно 2-3 секунды--невозможно ничего ввести в xterm и тому подобное (курсор мыши шевелится вроде нормально).

Насколько велик объем данных ?

На диске нет бэд блоков и т.д? dma надеюсь включен.

Попробуй hdparm -u1 /dev/hda

У меня такого НИКОГДА не было.

>2. Когда активно используется своп, также могут наблюдаться затыки, даже курсор мыши дёргается.

Такое случается, когда система засвопила память иксов. При движении мышки процесс иксов выходит из sleep, обращается к памяти , она засвопированна -> page fault -> sleep снова, пока не вытащит нужные страницы из подкачки.

теоретически , если сказать системе, чтобы не свопировала иксы, будет все OK.

можно поиграть с параметром /proc/sys/vm/swappiness и /proc/sys/vm/laptop_mode

xnix ★★
()
Ответ на: комментарий от mr

>Как-то в свой монтекарловской программе я переборщил с ресурсами, слишком много памяти занял.

man ulimit.

xnix ★★
()
Ответ на: комментарий от mr

>а вот что в 2.4 бывает--это вообще ужас

в 2.4 нет preemtable, так чтоа вот что в 2.4 бывает--это вообще ужас это естественно.

anonymous
()
Ответ на: комментарий от xnix

Это 1 в основном моего домашнего нотбука касается, особенно как он работает в режиме "агрессивного" энергопотребления, но не обязательно. Возникало бывало и на "пустом месте"--вижу, что gkrellm дисковую активность вдруг показывает.

Правда, я сейчас попробовал повторить, не очень получилось. Мне кажется что в последнее время я такого гораздо реже замечаю, может это из-за того, что я ядро обновил до 2.6.16? Кстати, какой-то PREEMPT в выводе uname есть, по-моему, недавно появилось.

К несчастью, потестировать снова в энергосберегающем режиме и не получится, потому как батарея моего быдлобука почему-то сдохла почти.:(

>Попробуй hdparm -u1 /dev/hda

Действительно, hdparm у меня показывает "unmaskirq = 0 (off)" . Надо попробовать.

>При движении мышки

Ну, про мышку это я больше к слову сказал. Гораздо больше меня пугает, что могут быть проблемы с залогиниванием.

mr ★★
() автор топика
Ответ на: комментарий от xnix

Это ясно.

Но мне кажется, что пользовательские программы принципиально не должны иметь возможность повесить ОС (в широком смысле), по крайней мере в идеале, не касаясь разных потенциальных уязвимостей.

Чуть не забыл: спасибо за ответ!

mr ★★
() автор топика
Ответ на: комментарий от mr

Вообще в ядре еще есть oom-killer, срабатывает, когда программа использует память слишком "агрессивно" и заканчивется swap.В некоторых ядрах он был сломан.

xnix ★★
()

hdparm -i что выдаёт ? скорее всего у тебя отсутвует потдержка DMA для винчестера, либо стоит что то вроде UDMA2. То есть возможно проблемма состоит в том что нехватает пропускной способности IDE канала.

anonymous
()
Ответ на: комментарий от anonymous

[root@blin2 andrei]# hdparm -i /dev/hda

/dev/hda:

 Model=IC25N040ATMR04-0, FwRev=MO2OAD4A, SerialNo=MRG287KBHY8X7H
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=DualPortCache, BuffSize=1740kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=78140160
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 
 AdvancedPM=yes: mode=0x80 (128) WriteCache=enabled
 Drive conforms to: ATA/ATAPI-6 T13 1410D revision 3a: 

 * signifies the current active mode

[root@blin2 andrei]# hdparm /dev/hda

/dev/hda:
 multcount    = 16 (on)
 IO_support   =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 16383/255/63, sectors = 40007761920, start = 0

Так, и как это интерпретировать?

mr ★★
() автор топика

Очевидно так и интерпретировать )

UDMA modes: udma0 udma1 udma2

Я считаю необходимо просто настроить контроллер винчестера с помощью hdparm. ключи сейчас на вскидку не помню, скажу чуть позже.

anonymous
()

Да, кстати.. в догонку к предыдущему посту, проверь скорость доступа к винчестеру с помощью hdparm -t и скорость кэша винчестера - контроллера на MB hdparm -T, на современных винчестерах первое значение порядка 65-67 мб/с.

anonymous
()
Ответ на: комментарий от anonymous

Первая цифра 26-27 MB/s, вторая ~930 MB/s. Диск ноутбячнный 40 Гб (кажется, 5400 rpm). Но мне кажется, что низкая скорость к затыкам приводить не должна.

mr ★★
() автор топика

Боюсь ты ошибаешься, попробуй ради эксперимента запустить hdparm -d1, если выдаст ошибку значит у тебя контроллер HDD работает без DMA, в этом случае тебе необходимо будет перекомпилировать ядро и добавлять туда модуль твоего HDD контроллера, если ошибки не будет, значит у тебя просто не настроенный контроллер HDD, добавь опции hdparm -c1 -X69 -W1. -X69 это включение UDMA 5. подробно про остальные глянь в man hdparm. удачи.

P.S. если твой винт не ниже производства 98-го года, он должен потдерживать UDMA 5.

anonymous
()
Ответ на: комментарий от anonymous

Да нет, все опции нормально поставились. По тесту hdparm -t скорость не увеличилась.

Ладно, буду проверять работу на практике, спасибо...

mr ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.