Niedawno pojawił się artykuł dotyczący programu OptimizationKit w wersji rozwojowej v0.1.0-rc2. Dziś udostępniona została wersja 0.1.0 tego demona służącego do optymalizacji Linuksa “w locie”.
Jest takie powiedzenie mówiące, że najtrudniej szuka się błędów we własnych programach. Jednak tym razem błąd leżał gdzieś pośrodku — między OptimizationKit a implementacją grup kontrolnych w jądrze — konkretnie mówiąc w domyślnych ustawieniach cgroup.
Problem polega na tym, że domyślnie grupy kontrolne są tworzone z włączonymi flagami cpuset.cpu_exclusive i cpuset.mem_exclusive — gdy tworzymy jakąś grupę, podajemy zakres używanych przez nią cpu i węzłów pamięci np. cpuset.cpus value=”0″ i cpuset.mems value=”0″. Jednak przy cpuset.*_exclusive te wartości nie mogą się powtarzać — z tego co wiem, to na większości mniejszych maszyn mamy tylko jeden węzeł pamięci, więc na dzień dobry pojawia się problem. Gdy chcemy utworzyć nową grupę i podamy w niej np. cpuset.cpus value=”0-1″ i cpuset.mems value=”1″, to nie będziemy mogli dodawać do tej grupy żadnych zadań, ponieważ w cpuset.cpus użyliśmy ponownie procesora 0.
Aby obejść tego typu problemy, dodałem do pliku konfiguracyjnego poniższe tagi, które zmieniają domyślne zachowanie grup kontrolnych.
<cpu_exclusive value="0" />
<mem_exclusive value="0" />
Jak widać na poniższym diffstat, zmiany w kodzie demona zostały ograniczone tylko do poprawek
diff -uprN OptimizationKit-0.1.0-rc2 OptimizationKit-0.1.0 | diffstat
conf/OptimizationKit.conf | 135 ++++++++++++++++++++++++
conf/mode_1_test.conf | 42 +++++++
conf/mode_3_4_test.conf | 27 ++++
conf/youtube_flash_fix.conf | 15 ++
distro/centos-fedora-rhel/centos-fedora-rhel.rc | 49 ++++++++
distro/gentoo/gentoo.rc | 29 +++++
distro/universal.rc | 36 ++++++
install.sh | 35 +++++-
samples/OptimizationKit.conf | 134 -----------------------
samples/OptimizationKit.rc | 49 --------
src/OptimizationKit | 5
src/ok_cfp.py | 10 +
src/ok_cg.py | 14 +-
src/ok_lib.py | 9 +
src/ok_mode_1.py | 4
src/ok_mode_2.py | 4
src/ok_mode_3.py | 4
src/ok_mode_4.py | 4
18 files changed, 405 insertions(+), 200 deletions(-)
(Szczególnie cieszy skrypt startowy do Gentoo nadesłany przez Matiit http://matiit.jogger.pl/ – chyba przydałoby się jeszcze dodać jakieś linki dla poszczególnych trybów init? Czekam na łatkę!)
Najnowszą wersję demona można znaleźć pod adresem http://download.tuxfamily.org/optimization/OptimizationKit/v0.1/
Zapraszam również na forum, na którym można otrzymać pomoc przy konfiguracji, zgłaszać dostrzeżone błędy, propozycje funkcjonalności etc.