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
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
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
ps aux
Wtedy będzie można powiedzieć co i jak
Pozdro
Offline
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
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
total used free shared buffers cached Mem: 3815 796 3018 38 45 297 -/+ buffers/cache: 453 3361 Swap: 7895 0 7895
Możecie coś więcej powiedzieć dlaczego wartość used to 796 a htop połowe mniej mniej więcej.
Offline
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
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)
Offline
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
Rozumiem, że ram jest wykorzystany w jakimś celu, jednal dlaczego htop podaje inną wartość niż free ??
Offline
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:
cat /proc/meminfo
Offline
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.
Online
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
@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
2536
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:30:45)
Offline
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
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?
Online
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
Nie wiem, być może faktycznie coś źle interpretuje, wtedy proszę o wyjaśnienie, na pewno nie obrażę się za konstruktywną krytykę.
Offline
2538
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:30:47)
Offline
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
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:
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
2539
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:30:49)
Offline
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
Strony: 1