LINUX.ORG.RU
ФорумTalks

[любви и обожания тред][таки готов] BFS & BFQ


0

2

Сколько CFS не корми, — а всё равно на сервер смотрит. Тихо шел XXI век, а дефолтный линуксовый планировщик всё так же не мог обеспечить приемлимую отзывчивость на десктопе. Хотя и напичкан какими-то эвристиками, а всё равно полное ощущение, что всем задачам в очереди он раздает время одинаково — и тем, что жрут его постоянно, и тем что по большей части ждут ввода.

Давно хотел попробовать BFS, но было лень. Последней каплей стало то, что, как выяснилось, на работу CFS значения nice не оказывают никакого существенного эффекта. Можно запустить несколько процессов echo 'while true ; do : ; done' | nice -n20 sh и получить эпичные тормоза во всех приложениях. Установка отрицательных найсов иксам и нужным приложениям тоже не приводит ни к какому эффекту. Completely, блджад, fair.

Собрал ядро с набором патчей от post-factum-а, включающее в себя BFS и BFQ. Ударил в бубен, пропатчил nvidia-173xx PKGBUILD, чтобы завелось с новым ядром. Для полноты ощущений, поставил verynice. Выдохнул. Перезагрузился.

Запустил сполдюжины echo 'while true ; do : ; done' | sh.
Не тормозит.
Ладно. Запустил многопоточную сборку.
Не тормозит.
Запустил воспроизведение музыки, dbench на 50 потоков и find / > /dev/null.
Не тормозит. Бага-который-нельзя-называть не показывает. Просто работает.
Окей, применим секретное оружие: запись-чтение данных через ntfs3g. dd if=/dev/zero of=/media/e_data/test1 bs=16K & ; cat /media/data/Видео/* > /dev/zero
Не тормозит. (*)

Linux торт и готов для десктопа. Ня.


<дисклеймер мелким шрифтом>
(*) Все перечисленные тесты запускались раздельно. В случае одновременного запуска, отзывчивость системы не гарантируется. Ваш К.О.
</дисклеймер мелким шрифтом>

★★

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

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

имена мне намекнули только на то, что в модулях этого ядра уже есть блоб

Это, вообще-то, противозаконно. Там отдельно ядра, отдельно блобы.

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

тогда арчеры начудили какую-то неведому херню
ибо блобу плевать на ядро, если оно только не rt

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

блоб нвидии там, только самого ядра нет
и блоб обычный - никаких патчей в билде не нашёл

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

спроси его
вообще блоб на любые ядра ставится, кроме реал-тайм
для последнего в своём оверлее сделал USE флаг ---> один пакет для любых ядер
имеет смысл делать только 2 пакета (если уж в один никак) - это для rt и для всех остальных
можешь передать тому арчеру, что я его нарёк дегенератом

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

можешь передать тому арчеру, что я его нарёк дегенератом

Можешь наречь его дегенератом лично, он даже, специально для этого, свой e-mail в PKGBUILD'ах указывает. А я ему всё равно благодарен за удобную репу.

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

не-не-не
я не арчер - мне плевать на вашу песочницу - куличики не мне кушать :3

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

> а при чём здесь блоб нвидии? о_О

Блоб ни при чем. Надо просто в PKGBUILD-е пути установки блоба поменять.

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

не-не-не
ты меня не путай!
нужен один единственный пакет с блобом и всё
зачем плодить лишние дубли?
бред же
ладно рт - там просто так блоб не собрать, а с ck то зачем?

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

>Ты открыл для себя, что в системе можно держать больше одного ядра?
2.6.38-pf1
2.6.38-pf2
2.6.38-pf4
2.6.38-pf5
2.6.38-pf6
2.6.38-pf7
2.6.39
2.6.39-pf1
2.6.39-pf3
2.6.39-pf4

открой для себя «uname -r» что ли...
арчеры - такие арчеры

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

при установке модуля-то?
а почему нет? о_О
нет, [censored], надо налепить кучу одинаковых пакетов!
браво!
деградация - это так модно! (с) я

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

> надо налепить кучу одинаковых пакетов!

Незнакомство с матчастью или просто память плохая? Ты уж определись, ты про пакеты или про билды.

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

Уже можно через elevator, во всяком случае автор меня заверял, что добавить со следующей версии.

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

ICH10, Nvidia 210... pf, ck, zen перепробовал. Везде при включении BFQ и движении окон на драйверах 270.41.* и 275.09.07 была такая фигня. На другом компе такого не замечал ни разу. На ноуте тоже всё пучком.
=> В блобе дело.

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

Ну открой мне глаза =)
- скажи - что настроить, чтобы заработало.

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

Вот даже тебе мои текущие .config и xorg.conf на том хосте.
Было б здорово, если бы заработало, так как такие конфигурации популярны в некоторой дельта-области моего обитания...

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

она стала быстрее, а память/проц она как начала хавать в 10.00 так и сейчас..

ZuBB ★★★★★
()

Попробуйте пожалуйста dd

if=/dev/zero of=/root/file.txt bs=1024 count=10240000
B посидите в firefox ну или подобной тяжелой программке.

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

ты про bfs хоть что-нибудь курил?
и вообще впервые читаю про такие проблемы
(у меня какая-то волшебная видяха - 99% багов тупо не работают на ней :( )

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

У меня на 2.6.9-pf1 не работает

echo bfq > /sys/block/sda/queue/scheduler
echo 1000 > /proc/sys/vm/vfs_cache_pressure
echo 10 > /proc/sys/vm/swappiness
Тормоза несусветные(firefox секунда через три отзывается)

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

хз - у меня сейчас 3.0.1-pf1
пофиг - всё отлично
правда у меня ещё одна фича(внимание - быдлокод: надо будет пофиксить на досуге)

#!/bin/bash
PROGRAMMS="as grc kio_file su make ebuild emerge einstall emake dd ktorrent eiskaltdcpp-qt eiskaltdcpp-gtk rtorrent deluged transmission-daemon"

while [[ `pidof X` ]]
do
for prog in `echo $PROGRAMMS|tr " " "\n"`;
do
sleep 2 && renice -n 20 -p `pgrep $prog` &>/dev/null
sleep 2 && ionice -n 7 -t -c 3 -p `pgrep $prog` &>/dev/null
done
done
и
#!/bin/bash

for user in `grep '/home/' /etc/passwd|grep -v 'nologin'|cut -d: -f1`;
do
if [[ -d `grep $user /etc/passwd|grep -v 'nologin'|cut -d: -f6` ]]; then
export X_USER=`echo $X_USER $user|tr " " ","`;
fi
done

while [[ `pidof X` ]]
do
renice -n 20 -p `pidof kswapd0` &>/dev/null || exit 1
sleep 1 && renice -n 10 -p `pgrep -u root -v X` &>/dev/null || exit 1
sleep 3 && renice -n -19 -p `pgrep -u $X_USER && pidof X ` &>/dev/null || exit 1
ionice -n 7 -t -c 3 -p `pgrep -u root -v X` &>/dev/null || exit 1
sleep 3 && ionice -n 0 -t -c 1 -p `pgrep -u $X_USER && pidof X` &>/dev/null || exit 1
exit 0
done
и через local запускаю:
sleep 4 && первый скрипт
sleep 1 && второй скрипт

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

первый фикс

#!/bin/bash
PROGRAMMS="as grc kio_file su make ebuild emerge einstall emake dd ktorrent eiskaltdcpp-qt eiskaltdcpp-gtk rtorrent deluged transmission-daemon"

while [[ `pidof X` ]]
do
for prog in $PROGRAMMS;
do
sleep 2 && renice -n 20 -p `pgrep $prog` &>/dev/null
sleep 2 && ionice -n 7 -t -c 3 -p `pgrep $prog` &>/dev/null
done
done

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

да всё просто:
всем рутовым минимум, кроме иксов
всем юзерским максимум, за исключением прог из первого скрипта
приоритеты назначаются как для доступа к процу, так и к вводу-выводу

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

Да у меня тоже на 2-х машинах всё прекрасно, а на той, что на рабочем месте и проц без VT-x, и видюха кажет 1024 в заместо 512, несчастливое место в общем.
Что я делал - игрался со всеми связанными параметрами ядра (вкл/выкл), кт. встречались в тредах о bfs и (нельзя называть). Пробовал ck, pf, zen(git).
Видюха упорствует. Запускаешь glxgears, двигаешь окно и наблюдаешь фризы.
Почему то думается, что дело именно в кактусе, т.к. видеокарта совсем бюджетная.
Да я тоже не встретил за всё время ни одной проблемы на 9600 gso, 460 gtx, 310m, видимо бывают исключения...

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

> if=/dev/zero of=/root/file.txt bs=1024 count=10240000

УМВР, на любом ядре. Ограничить число грязных страниц в кэше пробовал?

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

google dirty_bytes, dirty_background_bytes

Собственно, мой run-time конфиг ядра:

$ egrep -v '^$|#' /etc/sysctl.conf 
net.ipv4.ip_forward=1
vm.overcommit_memory = 2
vm.overcommit_ratio = 90
vm.dirty_bytes = 2097152
vm.dirty_background_bytes = 2097152
geekless ★★
() автор топика
Ответ на: комментарий от geekless

Спасибо Вам, вы спасли меня!
Больше года я боролся с этой проблемой и не мог понять почему ни одна инструкция не помогает мне, но стоило вам дать ключевые слова для goole так сразу все и заработало!
Огромное Спасибо!

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