Dedicando uma CPU para processos específicos
Publicado por Marcelo Moreira de Mello em 04/11/2009
[ Hits: 9.943 ]
Blog: http://tchellomello.blogspot.com
PID COMMAND PSR 1 init 0 2 migration/0 0 3 ksoftirqd/0 0 4 watchdog/0 0 5 migration/1 1 6 ksoftirqd/1 1 7 watchdog/1 1 8 events/0 0 9 events/1 1 10 khelper 0 11 kthread 0 15 kblockd/0 0 16 kblockd/1 1 17 kacpid 0 135 cqueue/0 0 136 cqueue/1 1 139 khubd 0 141 kseriod 0 208 pdflush 0 209 pdflush 0 210 kswapd0 0 211 aio/0 0 212 aio/1 1 367 pccardd 0 377 kpsmoused 0 409 ata/0 0 410 ata/1 1 411 ata_aux 0 415 scsi_eh_0 0 416 scsi_eh_1 0 417 scsi_eh_2 0 418 scsi_eh_3 0 425 kstriped 0 438 ksnapd 0 453 kjournald 0 481 kauditd 0 514 udevd 0 1178 iwl3945/0 0 1179 iwl3945/1 1 1181 iwl3945 0 1508 hd-audio0 0 2061 kcryptd_io 0 2062 kcryptd 0 2071 kmpathd/0 0 2072 kmpathd/1 1 2073 kmpath_handlerd 0 2162 kjournald 0 2170 kjournald 0 2175 kjournald 0 2413 kondemand/0 0 2414 kondemand/1 1 2503 auditd 0 2505 audispd 0 2537 syslogd 0 2540 klogd 0 2576 portmap 0 2606 rpciod/0 0 2607 rpciod/1 1 2614 rpc.idmapd 0 2639 dbus-daemon 0 2665 acpid 0 2679 hald 0 2680 hald-runner 0 2687 hald-addon-acpi 0 2694 hald-addon-keyb 0 2703 hald-addon-keyb 0 2706 hald-addon-keyb 0 2709 hald-addon-keyb 0 2715 hald-addon-stor 0 2754 sshd 0 2768 cupsd 0 2769 cups-polld 0 2784 xinetd 0 2807 sendmail 0 2815 sendmail 0 2830 gpm 0 2844 nasd 0 2858 crond 0 2890 xfs 0 2917 atd 0 2948 libvirtd 0 2963 rhnsd 0 3031 NetworkManager 0 3054 wpa_supplicant 0 3056 nm-system-setti 0 3058 dnsmasq 0 3072 smartd 0 3098 mingetty 0 3099 mingetty 0 3102 mingetty 0 3105 mingetty 0 3120 mingetty 0 3122 mingetty 0 3123 gdm-binary 0 3184 gdm-binary 0 3186 gdm-rh-security 0 3189 Xorg 0 3237 yum-updatesd 0 3239 gam_server 0 3251 gnome-session 0 3287 ssh-agent 0 3316 dbus-launch 0 3317 dbus-daemon 0 3323 gconfd-2 0 3326 gnome-keyring-d 0 3328 gnome-settings- 0 3348 metacity 0 3352 gnome-panel 0 3354 nautilus 0 3355 gnome-volume-ma 0 3357 bonobo-activati 0 3360 pidgin 0 3362 gnome-vfs-daemo 0 3366 eggcups 0 3376 bt-applet 0 3380 nm-applet 0 3385 puplet 0 3400 escd 0 3401 gnome-power-man 0 3418 mapping-daemon 0 3425 gweather-applet 0 3427 wnck-applet 0 3455 trashapplet 0 3482 gam_server 0 3501 stickynotes_app 0 3504 mixer_applet2 0 3506 clock-applet 0 3511 pam-panel-icon 0 3512 pam_timestamp_c 0 3516 notification-ar 0 3518 dhclient 0 3551 gnome-screensav 0 3566 gnome-terminal 0 3568 gnome-pty-helpe 0 3569 bash 0 3595 su 0 3598 bash 0 3702 bash 0 3741 run-mozilla.sh 0 3766 firefox 0 3803 npviewer.bin 0 3822 bash 0 3847 vim 0 3849 su 0 3852 bash 0 3891 bash 0 3918 su 0 3921 bash 0 3955 ps 0Obs.: Por mais que se isole um ou vários processadores do scheduler, alguns processos a nível de kernel-space já estarão alocados aguardando por tarefas user-space.
PID COMMAND PSR 1 init 0 4328 vsftpd 0Como podemos constatar, o scheduler atribuiu o CPU0 para as 2 tarefas. O que faremos agora é dedicar a CPU1 para os processos init e vsftpd.
PID COMMAND PSR 1 init 1 4328 vsftpd 1Pronto!!! Os processos init e vsftpd já estão rodando exclusivamente na CPU1. Outro recurso interessante do cpuset é que se o processo trabalhar com FORK, o processo filho irá herdar a cpu dedicada do processo pai, como no caso do vsftpd.
PID COMMAND PSR 1 init 1 4328 vsftpd 1 4352 vsftpd 1A cada novo processo o scheduler sempre irá atribuir a CPU0, afinal é a única CPU disponível (lembrem-se que isolamos a CPU1 do scheduler com o parâmetro isolcpus=1). Assim sendo, é extremamente recomendado a criação de um script que obtenha o PID do processo à ser isolado e envie para o conjunto cpuset desejado. Outra consideração também é que os diretórios criados dentro do /cpuset não são persistentes e portanto precisam ser recriados a cada reboot.
Tunando o sistema de arquivos - entendendo o journal do EXT3
Ativando e desativando CPUs sob demanda
Utilizando o RPM como ferramenta de recovery e auditoria
Atualizando o seu Fedora com o Preupgrade
Ataque de dicionário com OpenSSL - quebrando senhas
Compilar kernel 2.6.31 no Debian Lenny
Recompilando o kernel do Linux
Os "patches ck1" de Con Kolivas estão de volta
Instalando kernel 2.6.x no Slackware 10.2
Memória de 4GB só mostra 3.3GB no Red Hat e CentOS 5
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Pfsense com Squidguard transparente bloqueando Skype (1)
Partição e erro fatal do disco (16)