Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam!
Jak sztywno przydzielić wszystkim aplikacjom dwa wątki procesora? Chodzi mi o sytuację, gdy odpalę np ffmpeg, google chrome i maszynę wirtualną. ffmpeg obecnie zajmuje wszystkie rdzenie, a chciałbym żeby było przykładowo było tak:
- cpu0 i cpu1 ffmpeg
- cpu2 i cpu4 chrome i maszyna wirtualna
Czy jest możliwe? Które pliki konfiguracyjne (lub które narzędzie) za to odpowiada?
Pytam się, bo wczoraj miałem sytuację, jak poprzez złe dobranie ustawień ffmpeg z przeróbką wystartował z jakimiś 20 fps'ami, gdzie bitrate video ustawiłem 1M przy wykorzystaniu libxvid bodajże i przy okazji zajął mi cały procesor.
Offline
Zamiast przypisywać do rdzeni, zainteresuj się limitami.
Ręcznie i pierońsko skutecznie przez cpulimit.
Dosyć skutecznie przy pomocy Cgroup.
Przykład konfiguracji skryptologicznej "z palca" metodą "artystyczna rzeźba w bashu" masz tutaj:
http://jacekalex.sh.dug.net.pl/cgstart
Cgconfig u mnie nie umiał przeczytać swojego konfigu, dlatego doszedłem do wniosku, że bash, find, mkdir, chown, chmod for, ls i echo - to bardziej wiarygodne narzędzia, niż cokolwiek innego. :D
Konfig dla demona cgred, który pilnuje procesów i wrzuca gdzie trzeba co trzeba u mnie wygląda tak:
egrep -v '^$|#' /etc/cgroup/cgrules.conf
*:firefox* cpu,memory,net_cls users/firefox/ *:plugin-container cpu,memory,net_cls users/firefox/ *:opera* cpu,memory,net_cls users/opera/ *:rtmpdump cpu,memory,net_cls users/rtmpdump/ *:skype* cpu,memory,net_cls voip/skype/ *:pidgin cpu,memory,net_cls users/pidgin/ *:akregator cpu,memory,net_cls users/akregator/ *:kio_http cpu,memory,net_cls users/akregator/ *:liferea cpu,memory,net_cls users/liferea/ *:vlc cpu,memory,net_cls users/vlc/ *:mplayer* cpu,memory,net_cls users/mplayer/ *:/opt/google/chrome/chrome cpu,memory,blkio,net_cls users/chrome/ *:opera cpu,memory,net_cls users/opera/ *:totem cpu,memory,net_cls users/totem/ *:tvtime cpu,memory users/tvtime/ *:kaffeine cpu,memory,net_cls users/kaffeine/ *:/bin/cat cpu,memory system/cat/ *:thunderbird-bin cpu,memory,net_cls users/thunderbird/ *:thunderbird cpu,memory,net_cls users/thunderbird/ *:nautilus cpu,memory users/nautilus *:emerge cpu,memory,blkio,net_cls system/emerge *:ebuild cpu,memory,blkio,net_cls system/emerge *:make cpu,memory,blkio,net_cls system/emerge *:cmake cpu,memory,blkio,net_cls system/emerge *:qemu-system* cpu,memory,blkio,net_cls kvm/fbsd *:/usr/bin/filezilla net_cls users/wget/ *:wget net_cls users/wget/ *:axel net_cls users/axel/ *:curl net_cls users/axel/
I najwyraźniej działa:
cat /proc/`pidof firefox`/cgroup 13:hugetlb:/ 12:net_prio:/ 11:perf_event:/ 10:blkio:/ 9:net_cls:/users/firefox 8:freezer:/ 7:devices:/ 6:memory:/users/firefox 5:cpuacct:/ 4:cpu:/users/firefox 3:debug:/ 2:cpuset:/
;)
Jeżeli chcesz procesy limitować do poszczególnych rdzeni, to jest do tego moduł cpuset, ale więcej w nim roboty z konfiguracją niż korzyści, moim skromnym zdaniem.
A tu troszkę sznurków:
https://www.kernel.org/doc/Documentation/cgroups/
https://wiki.archlinux.org/index.php/Cgroups
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2013-06-27 08:14:20)
Offline
Strony: 1