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  2016-01-05 20:50:00

  lukas.gab - Użytkownik

lukas.gab
Użytkownik
Zarejestrowany: 2009-02-27

Ilość procesów i zajęcie ramu.

Cześć. Zacząłem interesować się co właściwie chodzi na moim komputerze. Widzę, w htop, że mam zajęte jakieś 280mb, jednak free mówi, mi że zajęte jest 800mb - dlaczego ?? Ponad to w htop widzę, że jest wiele takich samych procesów o innych PID - np. 4 NetworkManager z innymi PID, czy parę gnome-panel. Chciałbym się ogranczyć do niezbędnych procesów i nie wiem po co mi uruchomione 4 network managery, no i nie wiem na co zwracać uwagę - htop czy free ? Dzięki za pomoc !

Offline

 

#2  2016-01-05 22:13:07

  thomsson - Dyskutant

thomsson
Dyskutant
Zarejestrowany: 2011-10-26

Re: Ilość procesów i zajęcie ramu.

I htop i free działają dobrze i zwracają to samo, tyle ze free -m zwraca kilka wartości i ta wartość o której mówisz, to wartość zajętości ramu przez aplikacje + bufory

Free w kolumnie total zwraca zajętości buforo i używanego ramu, a w kolumnie used zwraca używany RAM (ten sam co w htop)

Co do procesów, to najprościej będzie jak pokazesz nam wynik polecenia

Kod:

ps aux

Wtedy będzie można powiedzieć co i jak

Pozdro


ilin napisał
"DUG to tez moja mała ojczyzna"

Offline

 

#3  2016-01-06 12:53:03

  lukas.gab - Użytkownik

lukas.gab
Użytkownik
Zarejestrowany: 2009-02-27

Re: Ilość procesów i zajęcie ramu.

Cześć. Chyba czegos nie rozumiem. Załączam screen htopa i free i jednak wartości się różnią. Dodatkowo dają wyjście ps aux.

ps aux

Kod:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.2  0.1  28696  5120 ?        Ss   12:29   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    12:29   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    12:29   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   12:29   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    12:29   0:00 [rcu_sched]
root         8  0.0  0.0      0     0 ?        S    12:29   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    12:29   0:00 [migration/0]
root        10  0.0  0.0      0     0 ?        S    12:29   0:00 [watchdog/0]
root        11  0.0  0.0      0     0 ?        S    12:29   0:00 [watchdog/1]
root        12  0.0  0.0      0     0 ?        S    12:29   0:00 [migration/1]
root        13  0.0  0.0      0     0 ?        S    12:29   0:00 [ksoftirqd/1]
root        14  0.0  0.0      0     0 ?        S    12:29   0:00 [kworker/1:0]
root        15  0.0  0.0      0     0 ?        S<   12:29   0:00 [kworker/1:0H]
root        16  0.0  0.0      0     0 ?        S<   12:29   0:00 [khelper]
root        17  0.0  0.0      0     0 ?        S    12:29   0:00 [kdevtmpfs]
root        18  0.0  0.0      0     0 ?        S<   12:29   0:00 [netns]
root        19  0.0  0.0      0     0 ?        S    12:29   0:00 [khungtaskd]
root        20  0.0  0.0      0     0 ?        S<   12:29   0:00 [writeback]
root        21  0.0  0.0      0     0 ?        SN   12:29   0:00 [ksmd]
root        22  0.0  0.0      0     0 ?        SN   12:29   0:00 [khugepaged]
root        23  0.0  0.0      0     0 ?        S<   12:29   0:00 [crypto]
root        24  0.0  0.0      0     0 ?        S<   12:29   0:00 [kintegrityd]
root        25  0.0  0.0      0     0 ?        S<   12:29   0:00 [bioset]
root        26  0.0  0.0      0     0 ?        S<   12:29   0:00 [kblockd]
root        28  0.0  0.0      0     0 ?        S    12:29   0:00 [kworker/1:1]
root        29  0.0  0.0      0     0 ?        S    12:29   0:00 [kswapd0]
root        30  0.0  0.0      0     0 ?        S    12:29   0:00 [fsnotify_mark]
root        36  0.0  0.0      0     0 ?        S<   12:29   0:00 [kthrotld]
root        37  0.0  0.0      0     0 ?        S<   12:29   0:00 [ipv6_addrconf]
root        39  0.0  0.0      0     0 ?        S<   12:29   0:00 [deferwq]
root        75  0.0  0.0      0     0 ?        S    12:29   0:00 [khubd]
root        76  0.0  0.0      0     0 ?        S<   12:29   0:00 [acpi_thermal_pm]
root        78  0.0  0.0      0     0 ?        S<   12:29   0:00 [ata_sff]
root        80  0.0  0.0      0     0 ?        S    12:29   0:00 [kworker/1:3]
root        81  0.0  0.0      0     0 ?        S    12:29   0:00 [kworker/0:2]
root        82  0.0  0.0      0     0 ?        S    12:29   0:00 [scsi_eh_0]
root        83  0.0  0.0      0     0 ?        S<   12:29   0:00 [scsi_tmf_0]
root        84  0.0  0.0      0     0 ?        S    12:29   0:00 [scsi_eh_1]
root        85  0.0  0.0      0     0 ?        S<   12:29   0:00 [scsi_tmf_1]
root        86  0.0  0.0      0     0 ?        S    12:29   0:00 [kworker/u16:2]
root        87  0.0  0.0      0     0 ?        S    12:29   0:00 [kworker/u16:3]
root        88  0.0  0.0      0     0 ?        S    12:29   0:00 [scsi_eh_2]
root        89  0.0  0.0      0     0 ?        S<   12:29   0:00 [scsi_tmf_2]
root        90  0.0  0.0      0     0 ?        S    12:29   0:00 [scsi_eh_3]
root        91  0.0  0.0      0     0 ?        S<   12:29   0:00 [scsi_tmf_3]
root        94  0.0  0.0      0     0 ?        S    12:29   0:00 [scsi_eh_4]
root        95  0.0  0.0      0     0 ?        S<   12:29   0:00 [scsi_tmf_4]
root        96  0.0  0.0      0     0 ?        S    12:29   0:00 [usb-storage]
root       100  0.0  0.0      0     0 ?        S<   12:29   0:00 [kworker/0:1H]
root       103  0.0  0.0      0     0 ?        S<   12:29   0:00 [kworker/1:1H]
root       124  0.0  0.0      0     0 ?        S    12:29   0:00 [jbd2/sda2-8]
root       125  0.0  0.0      0     0 ?        S<   12:29   0:00 [ext4-rsv-conver]
root       157  0.0  0.0      0     0 ?        S    12:29   0:00 [kauditd]
root       168  0.0  0.0  33092  3548 ?        Ss   12:29   0:00 /lib/systemd/systemd-journald
root       175  0.2  0.0  41496  3840 ?        Ss   12:29   0:00 /lib/systemd/systemd-udevd
root       229  0.0  0.0      0     0 ?        S    12:29   0:00 [kworker/0:4]
root       237  0.0  0.0      0     0 ?        S    12:29   0:00 [irq/42-mei_me]
root       238  0.0  0.0      0     0 ?        S<   12:29   0:00 [ktpacpid]
root       239  0.0  0.0      0     0 ?        S<   12:29   0:00 [hd-audio0]
root       242  0.0  0.0      0     0 ?        S<   12:29   0:00 [cfg80211]
root       246  0.0  0.0      0     0 ?        S<   12:29   0:00 [kpsmoused]
root       264  0.0  0.0      0     0 ?        S    12:29   0:00 [wl_event_handle]
root       389  0.0  0.0      0     0 ?        S    12:29   0:00 [jbd2/sda4-8]
root       390  0.0  0.0      0     0 ?        S<   12:29   0:00 [ext4-rsv-conver]
root       535  0.0  0.0  21916  3792 ?        S    12:29   0:00 bash
root       556  0.0  0.0  37072  2560 ?        Ss   12:30   0:00 /sbin/rpcbind -w
root       561  0.0  0.2 336264  8088 ?        Ssl  12:30   0:00 /usr/sbin/ModemManager
daemon     563  0.0  0.0  19012  1832 ?        Ss   12:30   0:00 /usr/sbin/atd -f
root       564  0.0  0.0  27492  2752 ?        Ss   12:30   0:00 /usr/sbin/cron -f
root       565  0.1  0.3 357264 13608 ?        Ssl  12:30   0:00 /usr/sbin/NetworkManager --no-daemon
root       567  0.0  0.1  55168  5276 ?        Ss   12:30   0:00 /usr/sbin/sshd -D
root       570  0.0  0.0  28368  2876 ?        Ss   12:30   0:00 /lib/systemd/systemd-logind
avahi      577  0.0  0.0  32216  2944 ?        Ss   12:30   0:00 avahi-daemon: running [new-host.local]
message+   578  0.1  0.1  42864  4036 ?        Ss   12:30   0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
avahi      593  0.0  0.0  32092   252 ?        S    12:30   0:00 avahi-daemon: chroot helper
root       600  0.0  0.0   4228    96 ?        Ss   12:30   0:00 /usr/sbin/minissdpd -i 0.0.0.0
root       895  0.0  0.0 258664  3632 ?        Ssl  12:31   0:00 /usr/sbin/rsyslogd -n
root       899  0.0  0.0   4248  1640 ?        Ss   12:31   0:00 /usr/sbin/acpid
root       901  0.0  0.1  86240  6448 ?        Ss   12:31   0:00 /usr/sbin/cupsd -f
root       902  0.0  0.1  71828  5300 ?        Ss   12:31   0:00 /usr/sbin/cups-browsed
root       904  0.0  0.1 279684  7136 ?        Ssl  12:31   0:00 /usr/lib/policykit-1/polkitd --no-debug
root       919  0.0  0.0  28696  2020 ?        Ds   12:31   0:00 (agetty)  
root       923  0.0  0.1 278464  6160 ?        SLsl 12:31   0:00 /usr/sbin/lightdm
Debian-+   933  0.0  0.0  55296  3252 ?        Ss   12:31   0:00 /usr/sbin/exim4 -bd -q30m
root       945  2.2  0.5 161128 21028 tty7     Rs+  12:31   0:04 /usr/bin/X :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
colord     949  0.1  0.3 308124 13316 ?        Ssl  12:31   0:00 /usr/lib/colord/colord
root       957  0.0  0.1  30880  6300 ?        Ss   12:31   0:00 /sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
root       966  0.0  0.2  25392 10064 ?        S    12:31   0:00 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /var/run/dhclient-wlan0.pid -lf /var/lib/NetworkManager/dhclient-68adb050-615d-4c89-bb1b-5976dec1a99a-wlan0.lease -cf /var/lib/NetworkManager/dhclient-wlan0.conf wlan0
lightdm    995  0.0  0.1  35752  3928 ?        Ss   12:31   0:00 /lib/systemd/systemd --user
lightdm   1000  0.0  0.0  49976  2116 ?        S    12:31   0:00 (sd-pam)  
lightdm   1057  0.0  0.0  24364  1932 ?        S    12:31   0:00 /usr/bin/dbus-launch --autolaunch 965e71e8999e4232bb740ec031e372b4 --binary-syntax --close-stderr
lightdm   1058  0.0  0.0  42116  2360 ?        Ss   12:31   0:00 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
lightdm   1060  0.0  0.1 337632  5512 ?        Sl   12:31   0:00 /usr/lib/at-spi2-core/at-spi-bus-launcher
lightdm   1064  0.0  0.0  42116  3292 ?        S    12:31   0:00 /usr/bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3
lightdm   1067  0.0  0.1 125204  4940 ?        Sl   12:31   0:00 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
root      1072  0.2  0.2 165824  8248 ?        Sl   12:31   0:00 /opt/teamviewer/tv_bin/teamviewerd -d
root      1095  0.0  0.1 232164  6164 ?        Sl   12:31   0:00 lightdm --session-child 13 22
lgabryel  1100  0.0  0.1  35752  3956 ?        Ss   12:31   0:00 /lib/systemd/systemd --user
lgabryel  1101  0.0  0.0  49976  2124 ?        S    12:31   0:00 (sd-pam)  
lgabryel  1104  0.0  0.3 365504 13396 ?        Ssl  12:31   0:00 mate-session
lgabryel  1133  0.0  0.0  10688   336 ?        Ss   12:31   0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session mate-session
lgabryel  1136  0.0  0.0  24364  1988 ?        S    12:31   0:00 /usr/bin/dbus-launch --exit-with-session mate-session
lgabryel  1137  0.0  0.0  42628  2944 ?        Ss   12:31   0:00 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
lgabryel  1141  0.0  0.1 178564  4836 ?        Sl   12:31   0:00 /usr/lib/dconf/dconf-service
lgabryel  1145  0.1  0.5 975796 20284 ?        Sl   12:31   0:00 /usr/bin/mate-settings-daemon
lgabryel  1147  0.1  0.4 312288 18560 ?        Sl   12:31   0:00 marco
lgabryel  1152  0.6  0.6 592004 25832 ?        Sl   12:31   0:01 mate-panel
lgabryel  1156  0.0  0.1 210004  6380 ?        Sl   12:31   0:00 /usr/lib/gvfs/gvfsd
lgabryel  1164  0.3  0.7 791316 27384 ?        Sl   12:31   0:00 caja
lgabryel  1166  0.0  0.3 394704 14528 ?        Sl   12:31   0:00 mate-screensaver
lgabryel  1169  0.0  0.2 293816 10052 ?        S<l  12:31   0:00 /usr/bin/pulseaudio --start --log-target=syslog
rtkit     1170  0.0  0.0 168772  2476 ?        SNsl 12:31   0:00 /usr/lib/rtkit/rtkit-daemon
lgabryel  1171  0.0  0.5 355372 20848 ?        Sl   12:31   0:00 mate-volume-control-applet
lgabryel  1176  0.0  0.2 303592  8180 ?        Sl   12:31   0:00 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
lgabryel  1177  0.0  0.2 204384 10992 ?        Sl   12:31   0:00 /usr/lib/x86_64-linux-gnu/polkit-mate/polkit-mate-authentication-agent-1
lgabryel  1185  0.1  0.3 541404 12588 ?        Sl   12:31   0:00 zeitgeist-datahub
lgabryel  1187  0.1  0.7 505308 27560 ?        Sl   12:31   0:00 nm-applet
root      1189  0.0  0.1 369684  7180 ?        Ssl  12:31   0:00 /usr/lib/udisks2/udisksd --no-debug
lgabryel  1197  0.1  0.4 329096 18324 ?        Sl   12:31   0:00 mate-power-manager
lgabryel  1200  0.0  0.1 337656  5448 ?        Sl   12:31   0:00 /usr/lib/at-spi2-core/at-spi-bus-launcher
lgabryel  1204  0.0  0.0  42116  3276 ?        S    12:31   0:00 /usr/bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3
lgabryel  1207  0.0  0.1 125204  4980 ?        Sl   12:31   0:00 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
lgabryel  1213  0.0  0.1 292876  7732 ?        Sl   12:31   0:00 /usr/bin/zeitgeist-daemon
lgabryel  1220  0.0  0.1 364084  7108 ?        Sl   12:31   0:00 /usr/lib/gvfs/gvfsd-trash --spawner :1.7 /org/gtk/gvfs/exec_spaw/0
lgabryel  1232  0.0  0.3 311056 14736 ?        Sl   12:31   0:00 /usr/lib/x86_64-linux-gnu/zeitgeist-fts
lgabryel  1246  0.0  0.1  52024  5216 ?        S    12:31   0:00 /usr/lib/x86_64-linux-gnu/gconf/gconfd-2
root      1249  0.0  0.2 238684  8544 ?        Ssl  12:31   0:00 /usr/lib/upower/upowerd
lgabryel  1252  0.0  0.1 300268  7592 ?        Sl   12:31   0:00 /usr/lib/gvfs/gvfs-afc-volume-monitor
lgabryel  1257  0.0  0.1 202732  5540 ?        Sl   12:31   0:00 /usr/lib/gvfs/gvfs-goa-volume-monitor
lgabryel  1262  0.0  0.1 215768  6408 ?        Sl   12:31   0:00 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
lgabryel  1285  0.0  0.0   5956   780 ?        S    12:31   0:00 /bin/cat
lgabryel  1291  0.0  0.1 206688  6052 ?        Sl   12:31   0:00 /usr/lib/gvfs/gvfs-mtp-volume-monitor
lgabryel  1310  0.0  0.0   4328   108 ?        S    12:31   0:00 /bin/sh /usr/bin/start-pulseaudio-x11
lgabryel  1311  0.0  0.0  18516  2420 ?        S    12:31   0:00 /usr/bin/xprop -root -spy
lgabryel  1326  0.0  0.5 486660 23012 ?        Sl   12:31   0:00 /usr/lib/mate-panel/clock-applet
lgabryel  1327  0.0  0.5 382880 20332 ?        Sl   12:31   0:00 /usr/lib/mate-panel/wnck-applet
lgabryel  1328  0.0  0.3 269992 14068 ?        Sl   12:31   0:00 /usr/lib/mate-panel/notification-area-applet
lgabryel  1343  0.0  0.1 131128  6472 ?        Sl   12:31   0:00 /usr/lib/gvfs/gvfsd-metadata
lgabryel  1347 14.0  7.6 1153128 296996 ?      Sl   12:31   0:21 iceweasel
lgabryel  1407  1.1  0.5 464488 22532 ?        Sl   12:33   0:00 mate-terminal
lgabryel  1413  0.0  0.0  14684  1732 ?        S    12:33   0:00 gnome-pty-helper
lgabryel  1414  0.1  0.1  24736  6544 pts/0    Ss   12:33   0:00 bash
root      1434  0.0  0.0      0     0 ?        S    12:34   0:00 [kworker/1:2]
lgabryel  1435  0.0  0.0  19092  2484 pts/0    R+   12:34   0:00 ps aux

Kod:

             total       used       free     shared    buffers     cached
Mem:          3815        796       3018         38         45        297
-/+ buffers/cache:        453       3361
Swap:         7895          0       7895

http://zapodaj.net/81d2c0b50f012.png.html


Możecie coś więcej powiedzieć dlaczego wartość used to 796 a  htop połowe mniej mniej więcej.

Offline

 

#4  2016-01-06 13:07:17

  Pavlo950 - człowiek pasjonat :D

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

Re: Ilość procesów i zajęcie ramu.

Popraw screeny.

Według tego co podałeś, używane jest 796, w czy 297 to cache czyli htop powinien pokazywać 499. A i zapomniałem o buforze, czyli 454 po jego odjęciu (45).

Ostatnio edytowany przez Pavlo950 (2016-01-06 13:08:23)

Offline

 

#5  2016-01-06 13:07:54

  Jacekalex - Podobno człowiek...;)

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

Re: Ilość procesów i zajęcie ramu.

Linux zawsze używa cały ram, jaki jest dostępny, po prostu trzyma w nim bufory systemów plików i zapamiętuje biblioteki systemowe i programy, które zostały chociaż raz użyte, żeby ich ponownie nie czytać z dysku, jak będą potrzebne ponownie.

Cały sposób używania RAM w Linuxie jest tak zorganizowany, żeby zminimalizować liczbę odwołań do dysków twardych.

Także w ogóle nie ma się co martwić, póki system chodzi, problemu nie ma.
Lepiej przy okazji w Linuxie zainwestować w szybką i pojemną pamięć RAM, system potrafi ją optymalnie używać.

Przykład działania RAM w Linuxie:

~> time date
śro, 6 sty 2016, 13:09:42 CET

real    0m0.014s
user    0m0.001s
sys    0m0.002s

~> time date
śro, 6 sty 2016, 13:09:43 CET

real    0m0.002s
user    0m0.001s
sys    0m0.001s

Czym się różni wartość czasu wykonania real w obu poleceniach?
I skąd się bierze różnica w pierwszym i drugim wykonaniu tego samego polecenia?

Pozdro

Ostatnio edytowany przez Jacekalex (2016-01-06 13:13:00)


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

Offline

 

#6  2016-01-06 13:10:00

  Pavlo950 - człowiek pasjonat :D

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

Re: Ilość procesów i zajęcie ramu.

Jacekalex napisał(-a):

Cały sposób używania RAM w Linuxie jest tak zorganizowany, żeby zminimalizować liczbę odwołań do dysków twardych.

Winda za to wykorzystuje sporo więcej RAMu i dodatkowo odwołuje się do dysku. Co za durny system.

Offline

 

#7  2016-01-06 13:32:27

  lukas.gab - Użytkownik

lukas.gab
Użytkownik
Zarejestrowany: 2009-02-27

Re: Ilość procesów i zajęcie ramu.

Rozumiem, że ram jest wykorzystany w jakimś celu, jednal dlaczego htop podaje inną wartość niż free ??

Offline

 

#8  2016-01-06 13:39:54

  Jacekalex - Podobno człowiek...;)

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

Re: Ilość procesów i zajęcie ramu.

lukas.gab napisał(-a):

Rozumiem, że ram jest wykorzystany w jakimś celu, jednal dlaczego htop podaje inną wartość niż free ??

Oba czytają zawartość pliku /proc/meminfo - ale jakoś inaczej obliczają te wszystkie parametry, których tam jest kilkanaście.

Z resztą sam zobacz:

Kod:

cat /proc/meminfo

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

Offline

 

#9  2016-01-06 15:36:10

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: Ilość procesów i zajęcie ramu.

tak przy okazji kilku procesów...
windows do dziś nie dorobił się mechanizmu COW - czyli proces bardzo grzecznie się wątkuje, ale ogólnie widzisz go sztuk raz.
W normalnych uniksopochodnych masz funkcję fork - czyli utworzenie procesu (a nie wątku) potomnego. i to, że taki NM  rozmnaża się na dzień dobry na n procesów potomnych to normalka. wyświetl sobie drzewo procesów to zobaczysz o co biega.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#10  2016-01-06 18:38:11

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Ilość procesów i zajęcie ramu.

Tu jest info na temat różnicy w ps i htop jeśli chodzi o procesy: http://unix.stackexchange.com/questions/10362/why-d … ocess-than-ps

Ostatnio edytowany przez morfik (2016-01-06 18:38:25)

Offline

 

#11  2016-01-08 20:07:45

  lukas.gab - Użytkownik

lukas.gab
Użytkownik
Zarejestrowany: 2009-02-27

Re: Ilość procesów i zajęcie ramu.

@ethanak - Nie rozumiem, dlaczego wspominasz o Windows i co to ten COW. W Windowsie wątki to banał, tym bardziej, mając gotowy ThreadPooler z .NET. Z drugiej strony w linuxie wątki działają tak samo tylko, że chyba nie ma ThreadPoolera i trzeba to ręcznie implementować, natomiast co do fork - to zupełnie co innego bo to proces potomny z całym kontekstem osobnym i stosem co również jest możliwe do wykonania w windows jak i linux. Jeśli chodzi o to, że np. NetworkManager tworzy sobie 5 procesów to sądzę, że to nie jest jakoś fajne - w takim razie tworzenie zarówno procesu jak i przełączanie przez system jest kosztowne - w przypadku wątku jednak mimo, że to trudniejsze bo należy pamiętać o sekcjach krytycznych to karuzelowanie nie występuje.
W takim razie jest to kwestia kiepsko zaprojektowanego oprogramowania - po co managerowi sieci 5 stosów i koszt ich przełączania ? Lub jednak coś źle odczytuje - serio nie wyobrażam sobie co robi NetworkManager na 5 procesach i nie chce mi sie wierzyć, że tak jest. No chyba, że, może faktycznie to są wątki, wtedy jestem wstanie to zrozumieć ( przez lenistwo programisty, bo 5 wątków i tak pewnie i tak 4 czekają, no chyba, że jakieś wątki czekają na jakieś zasoby to ma to sens), ale wtedy nie były by widoczne w ps ??

@morfik, @Jacekalex - Dzięki, o to chodziło !

Serio, dzieki za pomoc i zainteresowanie !

Offline

 

#12  2016-01-08 20:29:50

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: Ilość procesów i zajęcie ramu.

2536

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:30:45)

Offline

 

#13  2016-01-08 21:00:22

  lukas.gab - Użytkownik

lukas.gab
Użytkownik
Zarejestrowany: 2009-02-27

Re: Ilość procesów i zajęcie ramu.

Z moich badań wynika, że tworzenie procesu na Windows i Linux jest bardziej czasowo kosztowne niż wątku  i przełączanie kontekstu również. To są po prostu różne zastosowania. Wątki mają pamięć wspólną, więc nie ma problemów z komunikacją jak w przypadku procesów gdzie w grę wchodzą pipy, pliki, sockety czy kolejka komunikatów. Procesów używa się do niezależnych zadań raczej i wtedy jest to prostsze, jednak gdy musimy się komunikować między procesami to zastosowanie wątków jest lepsze.

Procesy używam w zasadzie jak mam jakieś cieżkie neizależne party programu. Wtedy niestraszne jest naruszenie pamięci dla innego procesu, co w wątkach jest tragiczne. Niemniej nie sądzę, a zgłębiałem temat, że procesy są lepsze od wątków w linuxie - to po prostu takie same byty i nic tego nie zmieni., Bardziej zastanawia mnie architektura tych programów lub de facto błędy projektowe ;) Być może zostały zastosowane procesy ze względu na wygodę i niewiarę w swoje umiejętnosci ;)

--

Edyta - pierwsza linijka nie miała sensu

Ostatnio edytowany przez lukas.gab (2016-01-09 15:50:21)

Offline

 

#14  2016-01-09 09:42:12

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: Ilość procesów i zajęcie ramu.

Możesz mi odpowiedzieć (na poważnie i z ciekawości pytam) jakie to dogłębne zgłębiania doprowadziły cię do takiego wniosku? Szczególnie w sytuacji, gdy (jak sam przyznałeś) nie masz pojęcia jak naprawdę działa fork w Linuksie?


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#15  2016-01-09 16:06:33

  lukas.gab - Użytkownik

lukas.gab
Użytkownik
Zarejestrowany: 2009-02-27

Re: Ilość procesów i zajęcie ramu.

Nie no, nie jest tak, ze nie mam bladego pojęcia. Wiem tyle co z praktyki i z co zapamiętałem po lekturze Silberschatz'a ;) Bardziej, nie znam dokładnej implementacji która obecnie jest w jądrze.

Przede wszystkim fork() robi dokłądną kopię procesu - co za tym idzie wraz z licznikiem rozkazów, kontekstem procesora, kontekstem pamięci, stosem ( i to najgorze). Dalej pewnie proces ten jest modyfikowany dla konkretnego przypadku, jednak gdy jeden proces w wyniku karuzelowania ma być uśpiony, a drugi wzięty na warsztat przez CPU to najpierw trzeba zapamiętać te wszystkie rzeczy jak kontekst procesora i pamięci ( w tym stos) , więc pewnie odłożyć gdzieś do pamięci ram, lub do wirtualnej, pewnie gdzieś na swap jak już mało miejsca, niemniej nalezy to zrobić, nawet jak jest to w ram. W takim przypadku jeżeli użyjemy zmiennej która będzie zawsze trzymana w rejestrze CPU (po wyłączeniu optymalizacji gcc), wtedy w przypadku karuzelowania zmienna ta jest wyładowywana z rejestru i podczas ponownego powrotu do procesu tracimy czas na jej ładowania, gdzie przy wielokrotnej takiej operacji tracimy - jest wielkie znaczenie pomiędzy zmiennymi w pamieci cache, rejestrem lub o zgrozo pamięcią ram - badałem to podczas przetwarzania obrazów przez cpu i rozwijaniu pętli. Na koniec - procesy są obsługiwane przez system operacyjny i są storowane w tablicy task[] deklarowanej w pliku  include/linux/sched.h.

Wątki współdzielą pamięć - więc nigdy nie jest wyładowywana żeby zapamiętać kontekst w trakcie przełaczania wątków ( jedynie przy karuzelowaniu procesów ale to jest normalne i nie dzieje się tak często jak przełączanie wątków). Dalej jeżeli mamy zmienne w rejestrach to również wyładowywane z nich są tylko podczas karuzeli procesów. Na koniec wątki są impelmentowane w ramach procesu i implementowane przez pthread co zmniejsza narzut operacji na obsługę wątku ( w porównaniu do procesu)

Tutaj chodzi o prędkość  działania, nie o bezpieczeństwo ! Jasnym jest, ze proces jest bezpieczniejszy, i przy wątkowaniu nalezy myśleć ( czy w ogóle ma sens), gdyż jak się zrobi 5 wątków ale i tak większość czeka na zasoby to to nic nie daje - czasami może nawet pogorszyć wyniki ale zalezy to od specyfiki problemu.

Rozumiem, że jednak procesy i wątki stosuje się w innych przypadkach, jednak serio nie wiem dlaczego mnager sieci potrzebuje osobnych procesów z cieżkimi stosami a nie może podzielić się na kilka wątków. Raczej nie chodzi o odrębność własnie tych stosów tylko sądzę, że wygodę programisty, lub niezrozumienie wątków

https://what.thedailywtf.com/uploads/default/11505/6f3925bd03870f21.jpg

Nie wiem, być może faktycznie coś źle interpretuje, wtedy proszę o wyjaśnienie, na pewno nie obrażę się za konstruktywną krytykę.

Offline

 

#16  2016-01-09 16:24:59

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: Ilość procesów i zajęcie ramu.

2538

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:30:47)

Offline

 

#17  2016-01-09 16:42:22

  lukas.gab - Użytkownik

lukas.gab
Użytkownik
Zarejestrowany: 2009-02-27

Re: Ilość procesów i zajęcie ramu.

Obecnie nie mam czasu, ale wieczorem przeczytam i wyrażę opinię zatem. Natomiast polecam Silberschatz'a całym sercem - zarówni fajnie się czyta, jak i wiedza jest profesjonalna jak i obszerna.

Offline

 

#18  2016-01-09 17:32:12

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Ilość procesów i zajęcie ramu.

Ja sobie tak czytam ten wpis i tam jest ciekawe doświadczenie, tylko nie wiem za bardzo jak rozumieć jego wynik. Chodzi generalnie o odpalenie aplikacji i zmierzenie jej czasów za pomocą "time". U mnie wyszło coś takiego:

Kod:

7.42s user 0.84s system 13% cpu 59.584 total

Zgodnie z tym co tam w linku piszą, 0.84/(7.42/100)=11.3% . I to ma być absorbowane przez system. Tylko tam wyżej jest 13% cpu. I jak to rozumieć? Proces był wykonywany przez prawię jedną minutę (59.584), podczas której to zjadł w sumie 13% procesora, z których to 11.3% poszło na wywołania systemowe? Dobrze mówię? xD

Offline

 

#19  2016-01-09 18:49:15

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: Ilość procesów i zajęcie ramu.

2539

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:30:49)

Offline

 

#20  2016-01-10 11:00:25

  lukas.gab - Użytkownik

lukas.gab
Użytkownik
Zarejestrowany: 2009-02-27

Re: Ilość procesów i zajęcie ramu.

Gość, w arcie dał pare uproszczeń, oraz nie przedstawił jak wygląda dokładnie wątek, a proces w sposób bardziej techniczny, ale jest to zrozumiałe - ma to byc artykuł troszkę techniczny, ale nie dla osób zajmujących się SO. Dla mnie wszystko co napisał jest prawdą, zresztą pokrywa się z tym co pisałem wcześniej. Jako wstępne porównanie i taki pogląd na sprawę jest ok ale jak ktoś szuka rzetelnej wiedzy bo chce się tym zajmować to polecam autora o którym już 2 krotnie wspominałem w tym wątku.

Offline

 

Stopka forum

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