[RISOLTO] Utilizzo indesiderato swap dopo l'ibernazione

Ottimizzazione, pulizia, gestione e manutenzione di una Debian Box

[RISOLTO] Utilizzo indesiderato swap dopo l'ibernazione

Messaggioda Aki » 29/03/2019, 0:41

Ciao,

Sono incappato in un comportamento indesiderato al ripristino del sistema operativo dopo l'ibernazione sul disco.

Premetto che utilizzo Debian Buster con kernel Linux debian 4.19.0-2-amd64 #1 SMP Debian 4.19.16-1 (2019-01-17) x86_64 GNU/Linux su un computer con 4GByte di RAM e che il sistema operativo è configurato per chiedere al kernel di utilizzare il meno possibile la memoria di swap avendo impostato la swappiness a zero:
Codice: Seleziona tutto
/sbin/sysctl vm.swappiness
vm.swappiness = 0

Da https://www.kernel.org/doc/Documentation/sysctl/vm.txt:
swappiness
This control is used to define how aggressive the kernel will swap memory pages. Higher values will increase aggressiveness, lower values decrease the amount of swap. A value of 0 instructs the kernel not to initiate swap until the amount of free and file-backed pages is less than the high water mark in a zone. The default value is 60.

La memoria di swap (allocati 4 GByte) è gestita tramite file di swap (e non tramite partizione dedicata).

continua ...
Aki
Global Moderator
Global Moderator
 
Messaggi: 8473
Iscritto il: 27/12/2007, 16:59

Re: Utilizzo indesiderato dello swap dopo l'ibernazione su d

Messaggioda Aki » 29/03/2019, 0:43

All'avvio del sistema operativo, dopo uno spegnimento completo ("cold boot"), il sistema operativo effettivamente utilizza in modo molto limitato la memoria di swap, come di seguito indicato dai comandi vmstat (swpd = 0) e smem :
Codice: Seleziona tutto
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 185948 203440 1483784    0    0  1405   344  536 1016 11  6 53 30  0

$ smem -w
Area                           Used      Cache   Noncache
firmware/hardware                 0          0          0
kernel image                      0          0          0
kernel dynamic memory       1565728    1382720     183008
userspace memory            1389828     423360     966468
free memory                  113728     113728          0

$ smem -K
  PID User     Command                         Swap      USS      PSS      RSS
 1185 aki /bin/sh /usr/bin/startkde          0      220      235     1636
 2143 aki script swap.log                    0      236      270     2476
 1542 aki /usr/bin/ksysguardd                0      564      590     2512
 1412 aki /usr/bin/dbus-daemon --conf        0      436      592     3996
 1282 aki kwrapper5 /usr/bin/ksmserve        0      516      753     7552
 1271 aki /usr/lib/dconf/dconf-servic        0      700      806     5252
 1414 aki /usr/lib/geoclue-2.0/demos/        0      676      826     6236
 1193 aki /usr/bin/dbus-daemon --sess      288      700      888     4360
 1407 aki /usr/lib/at-spi2-core/at-sp        0      800      960     6648
 1439 aki /usr/lib/gvfs/gvfsd              172      752      974     6764
 1594 aki /usr/lib/x86_64-linux-gnu/g        0      868     1095     6464
 1436 aki /usr/lib/at-spi2-core/at-sp        0      972     1147     7416
 2124 aki /bin/bash                          0     1780     2219     5164
 1457 aki /bin/bash                          0     1800     2225     5152
 2144 aki bash -i                            0     1812     2250     5196
 1174 aki /lib/systemd/systemd --user        0     1524     2819     9228
 1444 aki /usr/lib/gvfs/gvfsd-fuse /r        0     3100     3323     8536
 1291 aki /usr/lib/telepathy/mission-        0     4284     5068    16020
 1243 aki kdeinit5: Running...               0     2344     6807    34304
 1741 aki file.so [kdeinit5] file loc        0     3580     8009    33628
 1534 aki file.so [kdeinit5] file loc        0     3836     8276    34008
 1467 aki /usr/bin/python3 /usr/bin/h        0     5356     8988    18400
 1465 aki /usr/bin/python3 /usr/bin/h        0     8656    12260    23948
 2546 aki /usr/bin/python /usr/bin/sm        0    15932    15976    18472
 1293 aki /usr/lib/x86_64-linux-gnu/l        0    15612    17072    45788
 1339 aki /usr/bin/xembedsniproxy            0    16096    17597    48160
 1352 aki /usr/bin/gmenudbusmenuproxy        0    16148    17718    49336
 1379 aki /usr/bin/pulseaudio --daemo        0    15116    17835    31764
 1264 aki /usr/bin/kglobalaccel5           224    19148    21531    65572
 1362 aki /usr/bin/kactivitymanagerd         0    20020    22286    61100
 1247 aki /usr/lib/x86_64-linux-gnu/l        0    19648    22358    67296
 1258 aki /usr/bin/kaccess                   0    20112    22532    67636
 1251 aki kded5 [kdeinit5]                   0    16972    25339    75072
 1283 aki /usr/bin/ksmserver                 0    22328    25911    73940
 1355 aki /usr/lib/x86_64-linux-gnu/l        0    23956    27081    74640
 1377 aki /usr/lib/x86_64-linux-gnu/l        0    23968    27171    70828
 1381 aki /usr/bin/kmix -session 10c5        0    29024    33841    90836
 2115 aki /usr/bin/konsole                   0    27568    33989    92464
 1921 aki /home/aki/Programmi/f        0    23200    35945    83400
 1390 aki /usr/bin/konsole -session 1        0    31348    38106    97204
 1308 aki /usr/bin/krunner                   0    30980    38763   102492
 1416 aki /usr/bin/python3 /usr/bin/h        0    32660    40185   100200
 1866 aki /home/aki/Programmi/f        0    36292    55949   118220
 1290 aki /usr/bin/kwin_x11 -session         0    88712    98411   166904
 1826 aki /home/aki/Programmi/f        0    73820   105643   181412
 1310 aki /usr/bin/plasmashell               0   113604   126907   202572
 1766 aki /home/aki/Programmi/f        0   160792   201429   288840


continua ...
Aki
Global Moderator
Global Moderator
 
Messaggi: 8473
Iscritto il: 27/12/2007, 16:59

Re: Utilizzo indesiderato dello swap dopo l'ibernazione su d

Messaggioda Aki » 29/03/2019, 0:44

Se iberno il computer, si appalesa il comportamento inatteso. Al ripristino del sistema operativo dall’ibernazione, la memoria di swap risulta occupata per 194 MByte. Se iberno nuovamente e ripristino a breve giro dalla precedente ibernazione (senza avviare altri programmi o interagire con essi), la situazione peggiora ulteriormente, trovando al ripristino dall'ibernazione 426 MByte occupati:
Codice: Seleziona tutto
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 426612 1951440  43424 301568   11  485  2146   995  871 1546 14  9 49 28  0

$ smem -w
Area                           Used      Cache   Noncache
firmware/hardware                 0          0          0
kernel image                      0          0          0
kernel dynamic memory        360084     126012     234072
userspace memory             777176     231540     545636
free memory                 1932024    1932024          0

$ smem -K
  PID User     Command                         Swap      USS      PSS      RSS
 1414 aki /usr/lib/geoclue-2.0/demos/      596       16       66     3076
 1439 aki /usr/lib/gvfs/gvfsd              884       28       80     2932
 1271 aki /usr/lib/dconf/dconf-servic      576       40       81     2656
 1185 aki /bin/sh /usr/bin/startkde        104       76       91     1492
 1282 aki kwrapper5 /usr/bin/ksmserve      492        4       92     3224
 2143 aki script swap.log                    0      216      237     2060
 1457 aki /bin/bash                       1636      148      251     2156
 1412 aki /usr/bin/dbus-daemon --conf      276      172      292     3160
 1436 aki /usr/lib/at-spi2-core/at-sp      652      332      429     4440
 1407 aki /usr/lib/at-spi2-core/at-sp      460      352      499     4636
 1542 aki /usr/bin/ksysguardd                0      488      514     2436
 1243 aki kdeinit5: Running...           16156      168      562     7928
 1444 aki /usr/lib/gvfs/gvfsd-fuse /r     2516      580      653     3712
 1467 aki /usr/bin/python3 /usr/bin/h    12256      296      738     2960
 1594 aki /usr/lib/x86_64-linux-gnu/g        0      772      839     4280
 1193 aki /usr/bin/dbus-daemon --sess      264      740      877     3768
 1174 aki /lib/systemd/systemd --user      764      764     1540     5868
 1352 aki /usr/bin/gmenudbusmenuproxy    14972     1020     1617    13924
 1339 aki /usr/bin/xembedsniproxy        14972     1084     1634    13336
 2124 aki /bin/bash                          0     1776     1878     3720
 2144 aki bash -i                            0     2552     2675     4664
 1291 aki /usr/lib/telepathy/mission-     1100     2588     2944     8676
 1379 aki /usr/bin/pulseaudio --daemo     6948     3072     3384     8360
 1258 aki /usr/bin/kaccess               17332     2720     3546    19540
 1465 aki /usr/bin/python3 /usr/bin/h    11840     3116     3598     7300
 1293 aki /usr/lib/x86_64-linux-gnu/l    12352     3100     3629    15000
 1355 aki /usr/lib/x86_64-linux-gnu/l    19240     2832     3780    20808
 1741 aki file.so [kdeinit5] file loc    13932     3656     4104    10532
 1534 aki file.so [kdeinit5] file loc    13936     3836     4134     9812
 1247 aki /usr/lib/x86_64-linux-gnu/l    15952     3600     4518    21268
 1377 aki /usr/lib/x86_64-linux-gnu/l    19604     4344     5673    23360
 1283 aki /usr/bin/ksmserver             17884     4952     6369    25356
 1264 aki /usr/bin/kglobalaccel5         13980     5516     6706    23580
 1251 aki kded5 [kdeinit5]               19940     5200     7030    23388
 1381 aki /usr/bin/kmix -session 10c5    21024     6700     7959    27092
 1390 aki /usr/bin/konsole -session 1    23108     7116     9931    30768
 1308 aki /usr/bin/krunner               23284     7100    10247    34132
 3428 aki /usr/bin/python /usr/bin/sm        0    15972    16028    18168
 1362 aki /usr/bin/kactivitymanagerd      2924    16516    17235    31352
 1416 aki /usr/bin/python3 /usr/bin/h    11628    21448    22737    41540
 1921 aki /home/aki/Programmi/f      292    22552    23831    32260
 2115 aki /usr/bin/konsole                   0    28348    31495    53400
 1866 aki /home/aki/Programmi/f        0    35860    40010    54012
 1290 aki /usr/bin/kwin_x11 -session     22660    61480    66088    93052
 1826 aki /home/aki/Programmi/f      292    67344    83413   109648
 1310 aki /usr/bin/plasmashell           20000    90676    96685   126144
 1766 aki /home/aki/Programmi/f      372   142468   164565   197936

A vostro avviso, come posso fare in modo che al ripristino del sistema operativo dall'ibernazione lo stato del sistema operativo sia corrispondente a quello antecedente all'ibernazione (con limitato consumo di swap) ?

Per quale motivo ad ogni riavvio, a parità di applicazioni in esecuzione, tra una ibernazione ed il successivo riavvio, l'occupazione della memoria di swap aumenta sempre di più ?

Allego un file di log completo.
Allegati
swap.gz
(2.96 KiB) Scaricato 24 volte
Aki
Global Moderator
Global Moderator
 
Messaggi: 8473
Iscritto il: 27/12/2007, 16:59

Re: Utilizzo indesiderato dello swap dopo l'ibernazione su d

Messaggioda byte64 » 30/03/2019, 15:45

Per mia fortuna con 16GB di ram non ho questo problema.....anche senza swappiness a 0, e la swap-memory è usata esclusivamente per l'ibernazione.
La questione credo sia dovuta alla cache che rimane in swap-memory al momento dell'ibernazione.
Quando il sistema si riattiva, svuota la swap dalla memoria che era in ram ma mantiene la memoria cache precedente (che era già presente).
In teoria anche dopo diversi cicli di ibernazione e riattivazione, pur aumentando la quantità di cache che viene ripristinata, ad un certo punto dovrebbe venire svuotata.
Potresti impostare uno swapoff-swapon ad ogni riavvio o ibernazione per essere sicuro di svuotare completamente la swap.

Ciao
byte64
Sr. Member
Sr. Member
 
Messaggi: 372
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: Utilizzo indesiderato dello swap dopo l'ibernazione su d

Messaggioda Aki » 07/04/2019, 10:39

byte64 ha scritto:Per mia fortuna con 16GB di ram non ho questo problema.....anche senza swappiness a 0, e la swap-memory è usata esclusivamente per l'ibernazione.

Mi interesserebbe, se possibile, visionare, per confronto con la mia, l’output dei comandi free e vmstat impartiti su una installazione come quella che stai usando, prima e dopo l’ibernazione, per verificare come il kernel, in fase di ripristino dall’ibernazione, utilizzi la memoria di sistema (ram+swap) anche in funzione del rapporto quantità RAM/SWAP. A tal fine, sarebbe anche interessante conoscere il numero di pagine di memoria allocate per l’immagine di ibernazione.
Aki
Global Moderator
Global Moderator
 
Messaggi: 8473
Iscritto il: 27/12/2007, 16:59

Re: Utilizzo indesiderato dello swap dopo l'ibernazione su d

Messaggioda byte64 » 07/04/2019, 13:07

Come richiesto..
Ciao
Codice: Seleziona tutto
diego@uno:~$ sudo sysctl vm.swappiness
vm.swappiness = 60

Prima di ibernare:
Codice: Seleziona tutto
diego@uno:~$ free
              total        used        free      shared  buff/cache   available
Mem:       16357116     1626824    12633720       73668     2096572    14319632
Swap:      16601084           0    16601084


diego@uno:~$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 12750524 270184 1714760    0    0   593    23  295  638  3  1 95  0  0
 
diego@uno:~$ vmstat -s
     16357116 K total memory
      1621428 K used memory
      2069828 K active memory
       982056 K inactive memory
     12749752 K free memory
       270512 K buffer memory
      1715424 K swap cache
     16601084 K total swap
            0 K used swap
     16601084 K free swap
         5499 non-nice user cpu ticks
         2444 nice user cpu ticks
         3011 system cpu ticks
       246923 idle cpu ticks
          800 IO-wait cpu ticks
            0 IRQ cpu ticks
           99 softirq cpu ticks
            0 stolen cpu ticks
      1518722 pages paged in
        77229 pages paged out
            0 pages swapped in
            0 pages swapped out
       760422 interrupts
      1642878 CPU context switches
   1554636668 boot time
         3555 forks

Dopo riaccensione da ibernazione:
Codice: Seleziona tutto
diego@uno:~$ free
              total        used        free      shared  buff/cache   available
Mem:       16357116     1950696    12277032       75272     2129388    13994232
Swap:      16601084           0    16601084
       
diego@uno:~$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 12313248 276184 1840700    0    0   985    80  859 1823  8  3 88  0  0

 diego@uno:~$ vmstat -s
     16357116 K total memory
      1953592 K used memory
      2229332 K active memory
      1037464 K inactive memory
     12282808 K free memory
       276356 K buffer memory
      1844360 K swap cache
     16601084 K total swap
            0 K used swap
     16601084 K free swap
        11464 non-nice user cpu ticks
         2524 nice user cpu ticks
         5713 system cpu ticks
       210464 idle cpu ticks
          221 IO-wait cpu ticks
            0 IRQ cpu ticks
          210 softirq cpu ticks
            0 stolen cpu ticks
      1615778 pages paged in
       135473 pages paged out
            0 pages swapped in
            0 pages swapped out
      1561876 interrupts
      3293431 CPU context switches
   1554636668 boot time
         4949 forks
 
byte64
Sr. Member
Sr. Member
 
Messaggi: 372
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: Utilizzo indesiderato dello swap dopo l'ibernazione su d

Messaggioda Aki » 07/04/2019, 22:48

Ciao, grazie per aver condiviso i dati della Tua installazione.

Ho ulteriormente analizzato la mia installazione.

Preciso che la gestione della ibernazione è ottenuta tramite il pacchetto uswsusp e, quindi, la memoria di swap è gestita tramite un file del file system (/swap) e non come partizione dedicata (come spesso accade).

Le istruzioni di configurazione per configurare la memoria di swap tramite file sono, ad esempio, nel Wiki di Debian [1]. In tale configurazione, l'interazione di systemd con i programmi di gestione dell'ibernazione deve essere configurata come da bug report [2].

La configurazione di uswsusp in /etc/uswsusp.conf è la seguente:
Codice: Seleziona tutto
# /etc/uswsusp.conf(5) -- Configuration file for s2disk/s2both
resume device = /dev/disk/by-uuid/77d45a57-8ef9-4cde-ab74-d011f7dc1b04
# for /swap
resume offset = 23730176
# image size = 1388944343
image size = 0
compress = n
early writeout = y
RSA key file = /etc/uswsusp.key
shutdown method = shutdown
compute checksum = y

Per istruire systemd ad avviare l'ibernazione con s2disk di uswsusp, ho creato il file /etc/systemd/system/systemd-hibernate.service (che è richiamato da systemd al posto di quello di default) come indicato in [1] e modificato come indicato in [2]:
Codice: Seleziona tutto
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Hibernate
Documentation=man:systemd-suspend.service(8)
DefaultDependencies=no
Requires=sleep.target
After=sleep.target

[Service]
Type=oneshot
# Default by systemd
# /etc/systemd/system/systemd-hibernate.service

# Previuos line previously disabled by aki for uswsusp,
# see
#    https://wiki.debian.org/Hibernation/Hibernate_Without_Swap_Partition
#    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=758004
ExecStartPre=/bin/sh -c '/bin/run-parts -a pre /lib/systemd/system-sleep'
ExecStartPost=/bin/sh -c '/bin/run-parts -v -a post /lib/systemd/system-sleep'
ExecStart=/bin/sh -c '/usr/sbin/s2disk'

Ho, quindi, creato un file chiamato /lib/systemd/system-sleep/hibernate-debug in /lib/systemd/system-sleep per monitorare le fasi pre e post ibernazione in termini di utilizzo della memoria; tale file contiene:
Codice: Seleziona tutto
#!/bin/bash
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=758004

PATH=/sbin:/usr/sbin:/bin:/usr/bin

case "$1" in
   pre)
      echo -e "\n\n------- hibernate pre -------" >> /var/log/hibernate-debug
      /bin/date   >> /var/log/hibernate-debug
      /usr/bin/free   >> /var/log/hibernate-debug
      /usr/bin/vmstat >> /var/log/hibernate-debug

      echo "hibernate pre" | /usr/bin/logger
      /usr/bin/free   | /usr/bin/logger
      /usr/bin/vmstat | /usr/bin/logger

      echo -e "\n------- hibernate drop_cache -------" >> /var/log/hibernate-debug
      /bin/date   >> /var/log/hibernate-debug
      echo 3 > /proc/sys/vm/drop_caches
      /usr/bin/free   >> /var/log/hibernate-debug
      /usr/bin/vmstat >> /var/log/hibernate-debug

      echo "hibernate drop_cache" | /usr/bin/logger
      /usr/bin/free   | /usr/bin/logger
      /usr/bin/vmstat | /usr/bin/logger
      ;;
   post)
      echo -e "\n------- hibernate post -------" >> /var/log/hibernate-debug
      /bin/date   >> /var/log/hibernate-debug
      /usr/bin/free   >> /var/log/hibernate-debug
      /usr/bin/vmstat >> /var/log/hibernate-debug

      echo "hibernate post" | /usr/bin/logger
      /usr/bin/free   | /usr/bin/logger
      /usr/bin/vmstat | /usr/bin/logger

      /bin/date   >> /var/log/hibernate-debug
      swapoff -a
      /bin/date   >> /var/log/hibernate-debug
      swapon -a
      ;;
esac


[...continua nel messaggio successivo...]

[1] https://wiki.debian.org/Hibernation/Hibernate_Without_Swap_Partition
[2] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=758004
Aki
Global Moderator
Global Moderator
 
Messaggi: 8473
Iscritto il: 27/12/2007, 16:59

Re: Utilizzo indesiderato dello swap dopo l'ibernazione su d

Messaggioda Aki » 07/04/2019, 23:11

[..continua ..]

Ho, quindi, ottenuto in /var/log/hibernate-debug i log sotto indicati.

Prima di ibernare la macchina, dopo un cold-start, ottengo:
Codice: Seleziona tutto
----- hibernate pre -----
dom  7 apr 2019, 23.05.35, CEST
              total        used        free      shared  buff/cache   available
Mem:        3069216     1259016      907712       22108      902488     1626980
Swap:       4194300           0     4194300
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  1      0 907428  88096 814392  194  200   501   284  967 2402 14  9 69  9  0

Da questi dati, si evince che, nonostante l'utilizzo di buffer e cache, in spazio utente sono disponibili ancora circa 907 MByte, che proprio pochi non sono. Il sistema non sta utilizzando la memoria di swap (swpd = 0).

Per verificare se la cache poteva influenzare le fasi di ibernazione/ripristino, ho istruito il programma di monitoraggio a svuotare la cache prima di avviare l'ibernazione, ed il log mostra, prima che abbia inizio l'ibernazione, i seguenti dati di utilizzo di memoria:
Codice: Seleziona tutto
----- hibernate drop_cache -----
dom  7 apr 2019, 23.05.36, CEST
              total        used        free      shared  buff/cache   available
Mem:        3069216     1260580     1493788       22108      314848     1634240
Swap:       4194300           0     4194300
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  2      0 1493544   2892 312400  194  200   501   284  967 2401 14  9 69  9  0

Da questi dati, si evince che, dopo aver liberato parte della memoria occupata dalla cache, in spazio utente sono disponibili circa 1,4 GByte, con swap non utilizzata (swpd = 0).

A questo punto parte l'ibernazione. Il sistema operativo è configurato per generare l'immagine di ibernazione più piccola possibile; dal journal del sistema operativo, è risultato necessario creare un'immagine di 83549 pagine di memoria (1 pagina = 4 KByte), quindi pari in totale a 342216704 byte ovvero 340 MByte circa:
Codice: Seleziona tutto
apr 07 23:07:07 debian kernel: Syncing filesystems ...
apr 07 23:07:34 debian kernel: done.
apr 07 23:07:34 debian kernel: Freezing user space processes ... (elapsed 0.020 seconds) done.
apr 07 23:07:36 debian kernel: OOM killer disabled.
apr 07 23:07:36 debian kernel: PM: Marking nosave pages: [mem 0x00000000-0x00000fff]
[..omissis..]
apr 07 23:07:39 debian kernel: PM: Marking nosave pages: [mem 0xbfde2000-0xbfdfefff]
apr 07 23:07:39 debian kernel: PM: Basic memory bitmaps created
apr 07 23:07:39 debian kernel: PM: Preallocating image memory... done (allocated 81839 pages)
apr 07 23:07:39 debian kernel: PM: Allocated 327356 kbytes in 27.87 seconds (11.74 MB/s)
apr 07 23:07:39 debian kernel: Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
apr 07 23:07:39 debian kernel: ACPI: EC: interrupt blocked
apr 07 23:07:39 debian kernel: Disabling non-boot CPUs ...
apr 07 23:07:39 debian kernel: IRQ 28: no longer affine to CPU1
apr 07 23:07:39 debian kernel: smpboot: CPU 1 is now offline
apr 07 23:07:39 debian kernel: PM: Creating hibernation image:
apr 07 23:07:39 debian kernel: PM: Need to copy 83549 pages
apr 07 23:07:39 debian kernel: PM: Normal pages needed: 83549 + 1024, available pages: 701510

Il sistema, quindi, si iberna regolarmente, occupando circa 340 MByte dei 4 GByte del file di swap e con disponibili, al momento dell'ibernazione, 1,4 GByte di RAM libera.

A questo punto, avvio il ripristino dall'ibernazione, riaccendendo il computer. Il kernel riparte, rileva la presenza dell'immagine di ibernazione e la ripristina. Il trasferimento in memoria dell'immagine di ibernazione è relativamente veloce, ma, subito dopo, il computer diventa non responsivo ed il led del disco resta acceso di continuo. Il log generato (letto a posteriori) dopo il ripristino in /var/log/hibernate-debug riporta:
Codice: Seleziona tutto
------- hibernate post -------
dom  7 apr 2019, 23.07.53, CEST
              total        used        free      shared  buff/cache   available
Mem:        3069216      300216     2616744        1040      152256     2616712
Swap:       4194300     1049020     3145280
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  8 1048252 2613956   5584 147964  241  331   622   434 1183 2917 16 11 63 10  0

Dopo il ripristino del sistema dall'ibernazione, mi ritrovo con 1 GByte circa di memoria di swap occupata e circa 2,5 GByte di RAM libera. Non capisco, pertanto, perché se prima dell'ibernazione avevo 1,4 GByte di RAM libera, dopo il ripristino ne trovo liberi 2,5 GByte di RAM, ma con 1 GByte circa di memoria di swap occupata e, quindi, con un sistema operativo completamente rallentato e poco responsivo.

[..continua..]
Aki
Global Moderator
Global Moderator
 
Messaggi: 8473
Iscritto il: 27/12/2007, 16:59

Re: Utilizzo indesiderato dello swap dopo l'ibernazione su d

Messaggioda Aki » 07/04/2019, 23:12

[..continua dal messaggio precedente..]

Se tento di forzare il rientro della memoria di swap in RAM con i comandi swapoff -a && swapon -a , il log riporta che sono necessari almeno 3 minuti (!?!) per il completamento del primo comando:
Codice: Seleziona tutto
dom  7 apr 2019, 23.07.56, CEST
dom  7 apr 2019, 23.11.14, CEST

Dov'è l'inghippo ?
Aki
Global Moderator
Global Moderator
 
Messaggi: 8473
Iscritto il: 27/12/2007, 16:59

Re: Utilizzo indesiderato dello swap dopo l'ibernazione su d

Messaggioda byte64 » 08/04/2019, 11:09

Aki ha scritto:[..continua dal messaggio precedente..]

Se tento di forzare il rientro della memoria di swap in RAM con i comandi swapoff -a && swapon -a , il log riporta che sono necessari almeno 3 minuti (!?!) per il completamento del primo comando:
Codice: Seleziona tutto
dom  7 apr 2019, 23.07.56, CEST
dom  7 apr 2019, 23.11.14, CEST

Dov'è l'inghippo ?

Il rientro della memoria swap lo hai eseguito prima del comando di ibernazione o dopo il ripristino?
A mio parere dovrebbe essere più efficace eseguirlo prima dell'ibernazione.
Purtroppo la mi installazione è differente (swap in partizione) e dovrei smanettare un po' per duplicare la tua situazione....
byte64
Sr. Member
Sr. Member
 
Messaggi: 372
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: Utilizzo indesiderato dello swap dopo l'ibernazione su d

Messaggioda Aki » 01/05/2019, 20:19

byte64 ha scritto:[Il rientro della memoria swap lo hai eseguito prima del comando di ibernazione o dopo il ripristino?
A mio parere dovrebbe essere più efficace eseguirlo prima dell'ibernazione.

L'ho fatto prima dell'ibernazione.

byte64 ha scritto:Purtroppo la mi installazione è differente (swap in partizione) e dovrei smanettare un po' per duplicare la tua situazione....

Figurati, anzi grazie per avermi aiutato. In ogni caso, per il momento, ho risolto ritornando alla configurazione del file di swap tramite partizione dedicata invece che utilizzare un file del file system. Ho, quindi, smesso di utilizzare il programma s2disk (gestione dell'ibernazione in spazio utente) ed il relativo supporto nel kernel, tornando alla integrazione tra systemd e kernel nella gestione dell'ibernazione (suspend to disk). In tal modo, i tempi di spegnimento sono forse solo leggermente più lunghi, ma i tempi di avvio sono molto migliori e l'utilizzo della memoria di swap dopo il ripristino dall'ibernazione mi sembra minore del 50% circa nei casi peggiori.
Aki
Global Moderator
Global Moderator
 
Messaggi: 8473
Iscritto il: 27/12/2007, 16:59


Torna a Tuning

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti