Bash script na monitorování aktivity CPU

Bash script na monitorování aktivity CPU
« kdy: 20. 07. 2023, 10:24:32 »
S pomocí chatGPT se mi povedlo vytvořit tuhle utilitku pro .bashrc a .profile
Vypisuje aktuální stav v procentech. Nepovedlo se mi to udělat na setiny, protože to na Mintu 20 hlásilo chybu (už si nepamatuji jakou, myslím že to byla chyba tokenu). Utilitku využívám jen prvních 25-30 minut protože mám linux spuštěný jako VM pod Windowx XP a začít pracovat s prohlížečem mohu až uplynutí času. Takže jak se objeví zelená barva textu s aktivitou procesoru v procentech, tak vím, že mohu začít pracovat. Do budoucna uvažuji že bych přidal ještě údaj kolik zbývá volné paměti a automaticky by se mohl spustit úklid (uvolnění paměti) když kriticky dochází. Jinak to dělám ručně ten úklid ale je lepší to spustit nejpozději když je 250M volné.

Kód: [Vybrat]
# Funkce barevně vypíše aktivitu
declare -f mpstat_activity
mpstat_activity() {
  local idle=$(mpstat | awk 'NF >= 1 {idle += $(NF)} END {print idle}')
  local activity=$((100 - idle))

  if ((activity < 10)); then
    echo -e "\e[32m${activity}%\e[0m"  # Zelená 32
  elif ((activity < 12)); then
    echo -e "\e[33m${activity}%\e[0m"  # Žlutá; je špinavě žlutá
  elif ((activity < 14)); then
    echo -e "\e[33m${activity}%\e[0m"  # Oranžová 33
  else
    echo -e "\e[31m${activity}%\e[0m"  # Červená 31
  fi
}

PS1='$(mpstat_activity) $ '

# Spustit po startu na pozadí
declare -f mp
mp() {
  local duration=1800  # Délka trvání v sekundách (30 minut)
  local interval1=240  # Interval prvních 9 minut (4 minuty)
  local interval2=180  # Interval dalších 12 minut (3 minuty)
  local interval3=90   # Interval po uplynutí toho času (1.5 minut)
  local start_time=$(date +%s)

  mpstat_activity  # První volání

  while true; do
    local current_time=$(date +%s)
    local elapsed_time=$((current_time - start_time))

    if ((elapsed_time <= interval1)); then
      sleep "$interval1"
    elif ((elapsed_time <= interval1 + interval2)); then
      sleep "$interval2"
    elif ((elapsed_time <= duration)); then
      sleep "$interval3"
    else
      break  # Trvání skončilo, ukončení smyčky
    fi

    mpstat_activity
  done
}

# Funkce pro ukončení
declare -f mp_exit
mp_exit() {
  unset -f mp  # Odstranění funkce `mp` ze zásobníku
  echo "Monitoring procesoru ukončen."
}

# Přidání příkazů mp a mp_exit do .bashrc
alias mp='mp'
alias mp_exit='mp_exit'

mp &


Re:Bash script na monitorování aktivity CPU
« Odpověď #1 kdy: 20. 07. 2023, 10:50:53 »
A co ten Linux dělá prvních 30 minut, že tam nejde pracovat?

Jinak mám ve screen dole v rohu hodiny (to se hodí, jestli není zaseknuté) a load. To by se taky dalo použít. Ale nemění to barvu. Jestli chcete, dám .screenrc.


Re:Bash script na monitorování aktivity CPU
« Odpověď #2 kdy: 20. 07. 2023, 11:10:48 »
Jinak mám ve screen dole v rohu hodiny (to se hodí, jestli není zaseknuté) a load. To by se taky dalo použít. Ale nemění to barvu. Jestli chcete, dám .screenrc.


Prosím o .screenrc..
Díky

Re:Bash script na monitorování aktivity CPU
« Odpověď #3 kdy: 20. 07. 2023, 12:23:55 »
Tady je, je tam i něco zakomentováno, co se mi tolik nelíbilo:
https://pastebin.com/dZEhaRPd

Re:Bash script na monitorování aktivity CPU
« Odpověď #4 kdy: 20. 07. 2023, 12:34:34 »
Nikdo z komunity nepřišel na to co přesně tak dlouho dělá. Paměť je volná a cache jsem vypnul, jede to rychleji bez diskové cache. Pokilloval jsem všechny možné programy a procesy co jsem nepotřeboval. Po té půlhodině to jede docela dobře na 3.5 GB RAM. Mám tu smůlu že jsem zrovna narazil na tento limit. O pár stovek více, bylo by to v pohodě. Takhle zvládám jen YT, FB, ChatGPT, xed a subl. (Volba je mezi FB a YT obě současně spustit nemohu).


Jose D

  • *****
  • 889
    • Zobrazit profil
Re:Bash script na monitorování aktivity CPU
« Odpověď #5 kdy: 20. 07. 2023, 12:37:12 »
...
Jinak mám ve screen dole v rohu hodiny (to se hodí, jestli není zaseknuté) a load.
...
Ale nemění to barvu. Jestli chcete, dám .screenrc.
...

Myslím, že to by ti přineslo nehynoucí slávu na mých clusterech :)

Re:Bash script na monitorování aktivity CPU
« Odpověď #6 kdy: 20. 07. 2023, 22:46:06 »
Nikdo z komunity nepřišel na to co přesně tak dlouho dělá. Paměť je volná a cache jsem vypnul, jede to rychleji bez diskové cache. Pokilloval jsem všechny možné programy a procesy co jsem nepotřeboval. Po té půlhodině to jede docela dobře na 3.5 GB RAM. Mám tu smůlu že jsem zrovna narazil na tento limit. O pár stovek více, bylo by to v pohodě. Takhle zvládám jen YT, FB, ChatGPT, xed a subl. (Volba je mezi FB a YT obě současně spustit nemohu).

co říká systemd-analyze blame ?

jestli to je virtuál, tak co mu dát víc RAM?

je nějaký důvod, aby to bylo jako virtuál na Windows, ještě k tomu na XP?

k3dAR

  • *****
  • 2 961
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Bash script na monitorování aktivity CPU
« Odpověď #7 kdy: 21. 07. 2023, 01:41:35 »
...
Jinak mám ve screen dole v rohu hodiny (to se hodí, jestli není zaseknuté) a load.
...
Ale nemění to barvu. Jestli chcete, dám .screenrc.
...

Myslím, že to by ti přineslo nehynoucí slávu na mých clusterech :)
nebo si misto screen pust byobu, muze bezet nad screen nebo tmux(default) a pres F9 se dostanes do configurace kde si jde zapnout/vypnout z hromady udaju k zobrazeni ;-)

k3dAR

  • *****
  • 2 961
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Bash script na monitorování aktivity CPU
« Odpověď #8 kdy: 21. 07. 2023, 01:44:18 »
[...] mám linux spuštěný jako VM pod Windowx XP [...]
20.07.2023?? no fakt to neni ozivene vlakno dotazu po 15letech :-D

Re:Bash script na monitorování aktivity CPU
« Odpověď #9 kdy: 21. 07. 2023, 22:40:24 »
[...] mám linux spuštěný jako VM pod Windowx XP [...]
20.07.2023?? no fakt to neni ozivene vlakno dotazu po 15letech :-D

S Windows XP pracuji přesně 20 let.

Re:Bash script na monitorování aktivity CPU
« Odpověď #10 kdy: 21. 07. 2023, 22:43:01 »
Nikdo z komunity nepřišel na to co přesně tak dlouho dělá. Paměť je volná a cache jsem vypnul, jede to rychleji bez diskové cache. Pokilloval jsem všechny možné programy a procesy co jsem nepotřeboval. Po té půlhodině to jede docela dobře na 3.5 GB RAM. Mám tu smůlu že jsem zrovna narazil na tento limit. O pár stovek více, bylo by to v pohodě. Takhle zvládám jen YT, FB, ChatGPT, xed a subl. (Volba je mezi FB a YT obě současně spustit nemohu).

co říká systemd-analyze blame ?

jestli to je virtuál, tak co mu dát víc RAM?

je nějaký důvod, aby to bylo jako virtuál na Windows, ještě k tomu na XP?

Víc RAM nejde, tak jak to mám je to optimální.

systemd-analyze
Startup finished in 9.512s (kernel) + 41.629s (userspace) = 51.142s
graphical.target reached after 41.596s in userspace
$ systemd-analyze blame
20.024s udisks2.service                                                      >
18.643s networkd-dispatcher.service                                          >
13.719s fwupd-refresh.service                                                >
12.480s accounts-daemon.service                                              >
11.877s lightdm.service                                                      >
11.700s plymouth-quit-wait.service                                           >
10.794s ModemManager.service                                                 >
10.155s ubuntu-system-adjustments.service                                    >
 9.948s systemd-journal-flush.service                                        >
 9.860s dev-sdb3.device                                                      >
 8.010s avahi-daemon.service                                                 >
 7.955s NetworkManager.service                                               >
 7.857s polkit.service                                                       >
 7.585s systemd-logind.service                                               >
 7.511s wpa_supplicant.service                                               >
 4.197s systemd-udevd.service                                                >
 3.971s gpu-manager.service                                                  >
 3.623s grub-common.service                                                  >
 3.157s networking.service                                                   >
 2.988s ua-timer.service                                                     >
 2.733s apport.service
2.588s rsyslog.service                                                      >
 2.105s ntp.service                                                          >
 2.076s hddtemp.service                                                      >
 2.021s systemd-resolved.service                                             >
 1.843s apparmor.service                                                     >
 1.568s e2scrub_reap.service                                                 >
 1.466s systemd-tmpfiles-clean.service                                       >
 1.381s lm-sensors.service                                                   >
 1.320s systemd-modules-load.service                                         >
 1.210s systemd-tmpfiles-setup-dev.service                                   >
 1.107s alsa-restore.service                                                 >
 1.079s dns-clean.service                                                    >
 1.075s systemd-fsck@dev-disk-by\x2duuid-6c849af9\x2d2ec9\x2d4408\x2da3f7\x2d>
 1.039s user@1000.service                                                    >
 1.029s media-filmy.mount                                                    >
 1.002s keyboard-setup.service                                               >
  992ms systemd-sysctl.service                                               >
  964ms media-install.mount                                                  >
  910ms systemd-tmpfiles-setup.service                                       >
  854ms grub-initrd-fallback.service                                         >
  783ms systemd-journald.service                                             >
  763ms modprobe@efi_pstore.service                                          >
  756ms modprobe@ramoops.service                                             >
  746ms kerneloops.service                                                   >
  703ms systemd-udev-trigger.service                                         >
  670ms systemd-sysusers.service                                             >
  654ms pppd-dns.service                                                     >
  652ms sysstat.service                                                      >
  591ms systemd-random-seed.service                                          >
  553ms open-vm-tools.service                                                >
  515ms lvm2-monitor.service                                                 >
  471ms kmod-static-nodes.service                                            >
  437ms home-user-mnt.mount                                                  >
  407ms upower.service                                                       >
  375ms dev-hugepages.mount                                                  >
  371ms dev-mqueue.mount                                                     >
  367ms sys-kernel-debug.mount                                               >
  363ms sys-kernel-tracing.mount                                             >
  355ms blk-availability.service                                             >
  299ms ifupdown-pre.service                                                 >
  276ms setvtrgb.service                                                     >
  268ms run-vmblock\x2dfuse.mount                                            >
  253ms systemd-remount-fs.service                                           >
  221ms ufw.service                                                          >
  150ms systemd-update-utmp.service                                          >
  112ms systemd-user-sessions.service                                        >
   89ms rtkit-daemon.service                                                 >
   88ms dev-disk-by\x2duuid-8370ec3e\x2d7e00\x2sdasdasd7.>
   86ms console-setup.service                                                >
   64ms plymouth-read-write.service                                          >
   64ms motd-news.service                                                    >
   59ms modprobe@chromeos_pstore.service                                     >
   42ms user-runtime-dir@1000.service                                        >
   42ms openvpn.service                                                      >
   27ms plymouth-start.service                                               >
   25ms systemd-update-utmp-runlevel.service                                 >
   24ms finalrd.service                                                      >
   19ms home.mount                                                           >
   19ms modprobe@pstore_blk.service                                          >
   16ms modprobe@pstore_zone.service                                         >
   12ms sys-fs-fuse-connections.mount                                        >
    9ms sys-kernel-config.mount
« Poslední změna: 21. 07. 2023, 22:45:35 od exkalibr »

Re:Bash script na monitorování aktivity CPU
« Odpověď #11 kdy: 22. 07. 2023, 10:53:47 »
Tak to nevypadá ne žádnou službu systemd.

Jestli je nedostatek RAM problém, tak by se možná vyplatilo zapnout MGLRU. Aktuální LM 21.2 má možnost dát jádro 6.2 a tam už MGLRU je.

https://www.root.cz/zpravicky/mglru-poslano-do-jadra-6-1/

Swap tam máte? Jak je plný? Možná ještě zapnout kompresi zswap.


echo 1 > /sys/module/zswap/parameters/enabled
echo 1 > /sys/module/zswap/parameters/same_filled_pages_enabled
echo zstd > /sys/module/zswap/parameters/compressor #lz4 zstd
echo z3fold > /sys/module/zswap/parameters/zpool #zsmalloc z3fold
echo 25 > /sys/module/zswap/parameters/max_pool_percent #def 20
echo 80 > /sys/module/zswap/parameters/accept_threshold_percent #def 90

echo y > /sys/kernel/mm/lru_gen/enabled

« Poslední změna: 22. 07. 2023, 10:55:41 od Jan Fikar »