LINUX.ORG.RU

Как решить проблему 12309?

 ,


3

3

Задолбали уже тормоза: поставил вечером на работе пересобираться генту, из 915 пакетов пересобралось 730. Тормозит так, что работать невозможно, отправил emerge'у сигнал SIGSTOP. Вечером возобновлю.

Внимание, вопрос: доколе дисковый IO будет превращать всю систему в «папа, а правда, что линукс — многозадачная система? Да, сынок, но пока подожди, пока emerge закончит свою работу»?

Компиляю в chroot, ядро материнской системы: 3.6-pf (т.е. как бы все нужные патчи уже есть и тормозить не должно).

Конфигурация железа: четырехъядерник i5 x2.8ГГц; 6ГБ оперативы DDR2. Винт — SATA. Да, чипсет на материнской плате — интеловская дрянь. Но не настолько же он дряной, чтобы малейшие IO с использованием SATA вешали систему до состояния «пшел нафиг»?!

Кстати, дома та же история, но еще плачевней: там подохлее процессор + всего 2ГБ оперативы. Когда собирал gcc, компьютер вусмерть завис на час, потом oom-killer таки убил компилятор!

Можно ли с этим бороться? Вдруг есть какие-то волшебные настройки sysctl.conf кроме того, что там уже есть:

# 12309
vm.overcommit_memory = 2
vm.overcommit_ratio = 80
vm.dirty_bytes = 2097152
vm.dirty_background_bytes = 2097152
???

Ведь совершенно невозможно работать с такими тормозами!

// переходить на SSD по причине нищебродства не выйдет. Обновить железо в ближайшее время — тоже.

☆☆☆☆☆
Ответ на: комментарий от xorik

Еще есть такая штука как cgroups, для ограничивания ресурсов группе процессов, но удобных инструментов ей рулить нету

xorik ★★★★★
()
Последнее исправление: xorik (всего исправлений: 1)
Ответ на: комментарий от xorik

Ionice

А как глобально сделать? Потому что, скажем, тот же updatedb, когда просыпается, тоже заставляет идти на 15-20 минут пить кофе. На работе-то я его по крону запускаю в 6 утра, когда стопудово меня там не будет, а вот дома компьютер включен только когда за ним кто-то есть.

cgroups

Почитал. Интересная штука, но что-то хреново понятно, как с ней работать.

А на уровне ядра нет ли ничего такого, чтобы я в .config указал, и оно не тормозило? Или это фантастика?

Eddy_Em ☆☆☆☆☆
() автор топика

Компиляю в chroot, ядро материнской системы: 3.6-pf (т.е. как бы все нужные патчи уже есть и тормозить не должно).

Это кто тебе сказал, что не должно :)?

post-factum ★★★★★
()

Когда собирал gcc, компьютер вусмерть завис на час, потом oom-killer таки убил компилятор!

Это не 12309. Это банальная нехватка оперативы. Их очень часто путают.

12309 - это когда оператива свободна(=занята большей частью дисковым кэшем), при этом IO занят и при этом всё страшно тупит.

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

Это всё потому, что у него vm.overcommit_memory = 2. Так жить нельзя.

post-factum ★★★★★
()
Ответ на: комментарий от Eddy_Em

что-то хреново понятно, как с ней работать.

Есть редхатовские тулзы, но они упороты до невозможности.
Ещё яндекс пилил свой велосипед, обещал выложить, но так я и не видел его.
На самом деле там всё очень юниксово сделано через файлы, можно на баше/питоне написать скрипт для руления или даже гуй, но мне лень.

xorik ★★★★★
()

Кроме указанных

    vm.swappiness = 5
    vm.vfs_cache_pressure = 50
    vm.dirty_expire_centisecs = 1000
    vm.dirty_writeback_centisecs = 200

Ещё замечал, что laptop-mode-tools меняет параметры самостоятельно и при выходе из hibernate, посмотрев

cat /proc/sys/vm/{dirty_bytes,dirty_background_bytes,dirty_expire_centisecs,dirty_writeback_centisecs}
, решилось - local.d, hibernate/common.conf.

make.conf

PORTAGE_NICENESS="19"
PORTAGE_IONICE_COMMAND="ionice -c 3 -p \${PID}"
MAKEOPTS="-j4"
EMERGE_DEFAULT_OPTS="-j2"

backbone ★★★★★
()
Ответ на: комментарий от post-factum

Дык, у тебя же так кое-какие патчики уже есть...

Eddy_Em ☆☆☆☆☆
() автор топика

Тег «рукожопие» правильный. Добавь в make.conf

PORTAGE_NICENESS=19
PORTAGE_IONICE_COMMAND="ionice -c3 -p \${PID}"

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

12309 - это когда оператива свободна(=занята большей частью дисковым кэшем), при этом IO занят и при этом всё страшно тупит.

Вот так у меня на рабочем компьютере и происходит. free показывает 2.5ГБ свободной оперативы, а при наборе текста компьютер себя ведет как "задумчивый" 186-й.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от splinter

Только koi8, sysv, reiserfs! Только Eddy_Em!

anonymous
()

А если в виртуалке компилять?

fornlr ★★★★★
()

12309 это когда копируешь фильм на флешку, а система виснет намертво. Уже год как не сталкивался.

Да, сынок, но подожди пару лет, пока папа поймет что компилять систему на компе пользователя — бесмыссленная трата вычислительных ресурсов.

fixed

anonymous
()

пересобираться генту

А нахер?

Debasher ★★★★★
()

DMA для харда включено? Работает?
Шедулер для диска какой?
Хард не сыпется?
Может хард очень-очень медленный?

[offtop]
Не, ну вот ЧЯДНТ.
Оперативки свободной вроде-бы мало (см. ниже вывод free), но система работает стабильно, ничего не тормозит.
(небольшие «тормоза» внутри виртуалок, во время перекомпиляции world при 100% нагрузке на все ядра, не учитываю)
12309 ловил на последних ядрах 2.6 постоянно.
На ранних 3.xx было только при записи на флешки больших (от 1Гб и более) файлов.
На последних 3.xx ядрах ни разу небыло.

Система:
CPU:Core i5-3470
MB:Asus P8Z77-V LX
Mem:16Gb
HDD:1)WD5003ABYX-01WERA1, 2)WD20EZRX-00DC0B0
OS: gentoo, kernel 3.14.4

На первом диске: система и виртуалки, на втором всё остальное
На обоих дисках lvm поверх luks, все ФС - ext4
Запущено: 4*qemu-kvm (суммарно 8 Гб в виртуалки выделено), samba (базы для 1С, файлопомойка для ~60 компов), mysql, apache, transmission, kde, mozilla (с флешем), и ещё куча всего по мелочи.
Средняя загрузка сети: ~400 Мбит/с

$ sudo ps ax | wc -l
386
$ sar | tail -n 5
08:10:11        all     54.88      0.00      9.60      2.01      0.00     33.52
08:20:11        all     41.20      0.00     12.97      5.62      0.00     40.22
08:30:11        all     38.53      0.00     11.43      7.43      0.00     42.60
08:40:11        all     40.42      0.00      9.05      2.41      0.00     48.12
08:50:11        all     43.24      0.00      6.85      0.57      0.00     49.34

$ cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.accept_ra_defrtr = 0
#Dropbox
fs.inotify.max_user_watches = 400000
fs.file-max = 500000

$ sudo free -m
             total       used       free     shared    buffers     cached
Mem:         15734      14602       1131         69        168       4112
-/+ buffers/cache:      10321       5413
Swap:            0          0          0

$ sudo hdparm -I /dev/sd[ab] | grep DMA\:
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 

cat /sys/block/sd[ab]/queue/scheduler
noop deadline [cfq] 
noop deadline [cfq] 

$ dd if=/dev/zero of=/mnt/VG0/test/test_file bs=1M count=2000 #disk1
2000+0 записей получено
2000+0 записей отправлено
 скопировано 2097152000 байт (2.1 GB), 9.59936 c, 218 MB/c

$ dd if=/dev/zero of=/mnt/VG1/test/test_file bs=1M count=2000  #disk2
2000+0 записей получено
2000+0 записей отправлено
 скопировано 2097152000 байт (2.1 GB), 10.374 c, 202 MB/c

$ echo $LANG
ru_RU.UTF-8

[/offtop]

DiMoN ★★★
()
Последнее исправление: DiMoN (всего исправлений: 1)

ещё в ядре можно попробовать включить CONFIG_SCHED_AUTOGROUP=Y

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

И updatedb из крона с измененным ionice запускать?

У меня настроен на запуск раз в неделю, но без ionice. Недавно созданные файлы и так запоминаются, в принципе.

backbone ★★★★★
()

vm.overcommit_memory = 2 vm.overcommit_ratio = 80

Если у тебя нет свопа, то ты выделил приложениям виртуальной памяти не больше 80% от оперативной памяти, а виртуальной памяти обычно требуется даже больше чем реальной. Т.е. приложения не смогут использовать больше ~60-80% от оперативной памяти, иначе к ним придёт OOM-Killer.

vm.dirty_bytes = 2097152 vm.dirty_background_bytes = 2097152

Ты выделил каждому процессу кэш записи 2Мб, при скорости диска от 50Мб/сек.

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

reiserfs, ясное дело! Больше ничего приличного и нет для десктопа.

Простите за глупый вопрос, но рандомные дедлоки в ней уже починили? Очень сильно раздражает зависания фс по среди рабочего дня, которое кроме как ребутом не лечится.

Khnazile ★★★★★
()

12309

Уже давно закрыт а ты слоупок!

3.6-pf (т.е. как бы все нужные патчи уже есть и тормозить не должно)

„Должно“? Кому оно „должно“? Оно тебе само сказало что „должно“ или у тебя нотариально заверенные документы на руках имеются?

Вдруг есть какие-то волшебные настройки грибы

:) Места надо знать!

init_6 ★★★★★
()

SSD не спасёт он I/O блокировок

mm3 ★★★
()
USE="experimental" emerge sys-kernel/gentoo-sources
General setup  --->
* Automatic process group scheduling
-*- Control Group support  --->
                      [*]   Freezer cgroup subsystem
                      [*]   Device controller for cgroups
                      [*]   Simple CPU accounting cgroup subsystem
                      [*]   Block IO controller
                      -*-   Group CPU scheduler  --->
                            -*-   Group scheduling for SCHED_OTHER
                            [*]     CPU bandwidth provisioning for FAIR_GROUP_SCHED


-*- Enable the block layer  --->
    IO Schedulers  ---> 
        <*> BFQ I/O scheduler
        [*]   BFQ hierarchical scheduling support

Если не выбрано, то по идее может помочь.

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

cgroups без конфигурирования в рантайме пользы не принесёт, половина из этого не нужна. BFQ зло, у меня к нему ненависть и аллергия, спасибо post-factum. deadline вроде лучше всего себя ведёт, Block IO controller ему тоже не нужен.

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

Ты выделил каждому процессу кэш записи 2Мб, при скорости диска от 50Мб/сек.

Нормально. Не будет слишком шустро писать.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Khnazile

рандомные дедлоки в ней уже починили?

Без понятия. У меня обычно зависает компьютер только по симптомам, схожим с 12309.

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

А это очень похоже на 12309 по симптомам, с той лишь разницей что назад оно не отвисает ни при каких условиях. Все может быть хорошо и гладко неделями, но рано или поздно при записи файла (как правило - мелкого) происходит что-то непонятное, и фс тихонько зависает, без всяких ошибок. После этого любая программа, попытавшаяся обратиться к сбойной фс тупо блокируется и ждет данных до бесконечности. Убить ее нельзя, т.к. linux не позволяет завершать программы, которые не заблокированы операциями ввода-вывода. Если / не в reiserfs, то есть шансы на «нормальную» перезагрузку, но сбойная фс естественно корректно не размонтируется.

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

Готово

Reiser4

А оно уже готово для десктопа?

Уже давно. Просто Линус ссыкует включать в ядро «файловую систему от убийцы».

Camel ★★★★★
()
Ответ на: комментарий от GNU-Ubuntu1204LTS

самое печальное (для этого треда), что начиная с 3х ядер, у меня в линуксе вообще ничего не тормозило. Дошло до того, что теперь на основном компе используется нативный линукс (а не в vmware как раньше), и его правда можно использовать, а не как раньше

stevejobs ★★★★☆
()

Как решить проблему 12309?

1) использовать ядро 2.6.18
2) поставить другой шедулер
3) забить на этот велосипедизм, и перейти всё-таки на bsd

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

иначе к ним придёт OOM-Killer.

воот всегда было интересно, как программы на десктопе выделают себе память?

они должны постоянно смотреть настройки оверкоммита, множить на свободную память и брать какой-то процент от нее?

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