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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-06-27 07:07:50

  Pavlo950 - człowiek pasjonat :D

Pavlo950
człowiek pasjonat :D
Zarejestrowany: 2012-02-20
Serwis

Przydzielenie na sztywno 2 wątków

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

 

#2  2013-06-27 08:09:53

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Przydzielenie na sztywno 2 wątków

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:

Kod:

egrep -v '^$|#' /etc/cgroup/cgrules.conf

Kod:

*: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:

Kod:

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ł [b]cpuset[/b], 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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2013-06-27 11:45:34

  Pavlo950 - człowiek pasjonat :D

Pavlo950
człowiek pasjonat :D
Zarejestrowany: 2012-02-20
Serwis

Re: Przydzielenie na sztywno 2 wątków

Zerknę wpierw na cpuset, ale to pod wieczór / jutro.

cpulimit jest o tyle niewygodne, że ręczne ;] ale skuteczne narzędzie - bawiłem się nim kiedyś.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.007 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00120 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.218.97.75' WHERE u.id=1
0.00077 UPDATE punbb_online SET logged=1728300327 WHERE ident='18.218.97.75'
0.00043 SELECT * FROM punbb_online WHERE logged<1728300027
0.00047 SELECT topic_id FROM punbb_posts WHERE id=235765
0.00025 SELECT id FROM punbb_posts WHERE topic_id=23825 ORDER BY posted
0.00040 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=23825 AND t.moved_to IS NULL
0.00021 SELECT search_for, replace_with FROM punbb_censoring
0.00069 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=23825 ORDER BY p.id LIMIT 0,25
0.00077 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=23825
Total query time: 0.00532 s