Swap-Linux e Memoria Virtuale-Windows

Se avete dubbi o domande sulla programmazione in generale, fatele qui
Rispondi
Frank_C
Newbie
Messaggi: 13
Iscritto il: 20 febbraio 2016, 18:34
Architettura: x86_64 (64bit)

Swap-Linux e Memoria Virtuale-Windows

Messaggio da Frank_C » 6 marzo 2016, 12:38

Salve Forum di Archlinux...sono un nuovo iscritto e questo è il mio primo post su questo forum.
Utilizzo Linux principalmente per la programmazione...ultimamente ho notato una sensibile differenza tra lo swap di Linux e la Virtual-Memory di Windows.
Su un portatile Asus con i7 e 16 GB di Ram con Windows 8.1 preinstallato ho aggiunto una installazione Linux che gestisce perfettamente il notebook con prestazioni non inferiori alla gestione Windows...tranne questo problema relativo allo swap...che descrivo di seguito:
Ho realizzato un programma C, che gestisce un numero considerevole (anche centinaia di milioni) di alberi RB, immagazzinandoli sulla memoria esterna attraverso una preallocata partizione di swap-Linux o di memoria virtuale (file di paging) su Windows, di dimensioni adeguate (per la gestione di 5000 alberi di 1milione di elementi ciascuno utilizzo una partizione swap di 600 GB) . Sullo stesso notebook Asus, quando il programma gira su Windows, dopo aver allocato i primi 300 alberi la RAM si riempie e a questo punto inizia ad aumentare velocemente la dimensione della memoria virtuale utilizzata dal programma. Nonostante la RAM sia quasi piena, mentre il programma sta' allocando migliaia di alberi, la gestione del Desktop di Windows continua ad essere ottimale, non ho problemi nell' aprire altre applicazioni Windows, altri File, e lavorare su altri programmi; su Linux invece una volta riempita la RAM con l'allocazione degli alberi, la gestione di Gnome-Desktop risente di un evidente calo di prestazioni, nel senso che per aprire un menu' o un altro file è necessario attendere un certo intervallo di tempo che a volte supera anche i 30 secondi; anche il mouse e la tastiera ne risultano notevolmente rallentati.
E' possibile installando qualche pacchetto-Linux aggiuntivo o modificando qualche parametro del Kernel-Linux, avere le stesse prestazioni di Windows nella gestione del computer, anche quando la RAM è piena e lo storage-dati in esecuzione coinvolge lo swap? Grazie in anticipo per le vostre risposte!

Avatar utente
Dusty
Little John
Messaggi: 895
Iscritto il: 12 agosto 2011, 13:15
Località: Firenze

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da Dusty » 6 marzo 2016, 19:25

Questo è un buon punto di partenza:
https://wiki.archlinux.org/index.php/Swap#Swappiness

Frank_C
Newbie
Messaggi: 13
Iscritto il: 20 febbraio 2016, 18:34
Architettura: x86_64 (64bit)

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da Frank_C » 8 marzo 2016, 16:21

grazie Dusty!....tra tutti i quei file in /proc/sys/vm...quale proveresti a modificare tu per risolvere il problema che ho io?

Avatar utente
TheSaint
Robin Hood
Messaggi: 7935
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da TheSaint » 8 marzo 2016, 17:50

Perché non usare la terza riga blu ?
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

pineout
Little John
Messaggi: 1264
Iscritto il: 10 luglio 2014, 9:08

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da pineout » 8 marzo 2016, 21:34

metti vm.swappiness=1
o l'opposto vm.swappinss=90
il fatto che windows sia piu' parco nella RAM o gestisca meglio la swap mi stupisce

Frank_C
Newbie
Messaggi: 13
Iscritto il: 20 febbraio 2016, 18:34
Architettura: x86_64 (64bit)

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da Frank_C » 10 marzo 2016, 11:54

con vm.swappiness = 20...ho trovato un notevole incremento delle prestazioni! Grazie a tutti!

Avatar utente
TheSaint
Robin Hood
Messaggi: 7935
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da TheSaint » 10 marzo 2016, 12:39

Magari puoi anche affinare se metti 15, a vantaggio della swap.
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

Frank_C
Newbie
Messaggi: 13
Iscritto il: 20 febbraio 2016, 18:34
Architettura: x86_64 (64bit)

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da Frank_C » 10 marzo 2016, 19:56

..sicuramente con tutti i parametri che si possono modificare nei file della directory /proc/sys/vm non ho ancora il massimo delle performance...ma anche così è sufficiente per diventare un fanatico, (che d'altra parte sono sempre stato da quando anni fà ho installato il mio primo linux), del nostro amatissimo sistema operativo.
Infatti mentre con Windows la dimensione degli alberi che il mio programma gestisce, non puo scendere al di sotto dei 500000 dati per albero a meno di ridurre sensibilmente la frequenza di lavoro del processore, Linux mi consente una libertà assoluta di tutti i parametri che regolano il mio programma di gestione dati. Ma forse qualche esperto Windows sarebbe in grado da dos di definire i parametri giusti anche per regolare oppurtunamente l'utilizzo intensivo della memoria virtuale Windows.
Premesso che io non sono un informatico di professione (sono laureato in Fisica vecchio ordinamento e ho imparato da solo a programmare in C e C++), trovo difficolta' a contattare Informatici professionisti che possano darmi una valutazione di questo mio programma , del quale ho parlato nel mio primo post: per entrare piu' nello specifico delle funzionalita' riporto la descrizione che segue :
questo programma implementa una struttura dati composta da un insieme di alberi binari con bilanciamento RED-BLACK, e a me sembra interessante perché su computer dell' attuale standard commerciale, mi permette di gestire anche migliaia di miliardi di chiavi(naturalmente con le appropriate dimensioni della memoria esterna disponibile). Il numero di alberi RB che sono gestiti dal programma nonché la dimensione degli stessi, sono fissati dall'utente come parametri di ingresso. In fase di esecuzione l'utente può selezionare uno degli alberi della struttura attraverso il suo numero identificativo, e l'albero selezionato è possibile gestirlo essendo disponibili tutte le funzioni di dizionario classico, oltre a funzioni di visualizzazione di un intervallo di livelli di ciascun albero (intervallo di livelli da visualizzare può essere scelto anche questo interattivamente dall'utente), e funzioni di creazione, distruzione, e gestione visuale completa di sotto-alberi, con nodo radice scelto dall'utente.
In più è disponibile una funzione di ricerca dati che confronta campioni di 3 Miliardi di dati casuali esterni, con 3 Miliardi di chiavi distribuite sugli alberi componenti la struttura, le intersezioni trovate vengono riportate su una struttura parallela di alberi anch'essi binari RB, e dotati di tutte le funzioni di gestione e visualizzazione gia' descritte per gli alberi di immagazzinamento sulla prima struttura; a richiesta dell'utente tutti i valori di intersezione trovati, oltre a essere riportati sulla struttura parallela di alberi RB, possono essere cancellati dal rispettivi alberi di appartenenza sulla struttura magazzino e tutte queste elaborazioni per il confronto [3 Miliardi dati esterni - 3 Miliardi di dati sulla struttura magazzino] terminano in 2 ore circa. Chiaramente se la ricerca confronta campioni di minori dimensioni i tempi si accorciano proporzionalmente. Grazie a tutti per eventuali risposte! Se qualcuno preferisse approfondire telefonicamente scrivo il mio numero di Cell:3466538679..
Cordiali Saluti a tutto il forum!

Avatar utente
Dusty
Little John
Messaggi: 895
Iscritto il: 12 agosto 2011, 13:15
Località: Firenze

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da Dusty » 11 marzo 2016, 13:29

Frank_C ha scritto:con Windows la dimensione degli alberi che il mio programma gestisce, non puo scendere al di sotto dei 500000 dati per albero a meno di ridurre sensibilmente la frequenza di lavoro del processore
Questa frase non è molto chiara.
Sarebbe più ragionevole se non potesse salire al di sopra a meno di aumentare la frequenza.
Non mi stupisce che a parità di hardware il programma lavori meglio con Linux.
Windows è appesantito da una montagna di software che fa di tutto di più per offrire la migliore generica 'esperienza'; Arch lo hai assemblato tu e ci hai messo dentro solo quello che serve a te, quindi offre la migliore 'esperienza' per te.
Comunque non trovo corretto fare un confronto secco tra Windows e Linux: bisognerebbe anche valutare l'impatto di due diversi compilatori e di due diverse librerie del linguaggio che hai usato.
Per ulteriori sviluppi, di suggerisco di leggere anche questo:
https://wiki.archlinux.org/index.php/Zswap

Frank_C
Newbie
Messaggi: 13
Iscritto il: 20 febbraio 2016, 18:34
Architettura: x86_64 (64bit)

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da Frank_C » 11 marzo 2016, 17:33

non era mia intenzione giudicare Linux migliore di Windows...e proprio per non dare questa impressione ho aggiunto che con ogni probabilità programmatori esperti della piattaforma DOS-Windows sarebbero in grado di ottimizzare l'utilizzo intensivo della Virtual_memory Windows, in modo da ottenere le stesse prestazioni che si hanno su Linux...io preferisco Linux proprio per le motivazioni cui tu stesso hai fatto riferimento parlando della libertà di configurazione dell'assemblaggio con la scelta dei pacchetti sw che ti servono....il problema della dimensione degli alberi...cerco di spiegarmi meglio: se tu hai studiato la teoria degli alberi RB...in particolare l'algoritmo per l'inserimento bilanciato, sicuramente ti ricordi della complessità O(log h) dove h è l'altezza dell'albero: quello che si ottiene se riduci le dimensioni degli alberi che vengono allocati in una sequenza automatizzata senza interruzioni uno dopo l'altro, è un incremento della velocita' media di riempimento della RAM, proprio perche' l'altezza degli alberi (bilanciati) ovviamente cresce con il numero degli elementi dell' albero (io per comodita' fisso una dimensione costante per ciascun albero); dunque sotto una soglia critica variabile a seconda dell'hardware della macchina, nel mio caso 500000 nodi per albero, la RAM si riempie troppo velocemente rispetto alla velocita' di trasferimento dei dati dalla RAM alla partizione di memoria virtuale, con il risultato di bloccare definitivamente il Desktop; per evitare tale blocco su Windows l'unico modo che io (ignorante) conosco, è ridurre la velocita' di riempimento della RAM abbassando la frequenza de l processore; anche su Linux abbassando la frequenza del processore si ottiene ovviamente una migliore (piu' veloce) gestione del Desktop e di tutte le applicazioni che utilizzi contemporaneamente al riempimento sequenziale degli alberi sul mio programma;ma grazie a te' Dusty non ne ho piu' bisogno; mi è stato sufficiente cambiare qualche parametro in /proc/sys/vm per ottenere una stabilita' assoluta anche con 5 o 6 applicazioni aperte simultaneamente all' inserimento sequenziale sugli alberi RB.... e il processore a tavoletta!! :D
Devo ringraziare anche The Saint e Pineout per i loro suggerimenti... :lol:

Avatar utente
Dusty
Little John
Messaggi: 895
Iscritto il: 12 agosto 2011, 13:15
Località: Firenze

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da Dusty » 11 marzo 2016, 19:10

Frank_C ha scritto:se tu hai studiato la teoria degli alberi RB
Mi sono confrontato con gli alberi binari da studente.
I Red-black sono arrivati dopo :( e me li sono persi.
mi è stato sufficiente cambiare qualche parametro in /proc/sys/vm
Se lasci un sintetico resoconto dei cambiamenti fatti, rendi un servizio ai posteri.
Ricordati che le modifiche a /proc/sys hanno validità temporanea e si perdono con il successivo boot.
Ultima modifica di Dusty il 11 marzo 2016, 19:54, modificato 1 volta in totale.

Frank_C
Newbie
Messaggi: 13
Iscritto il: 20 febbraio 2016, 18:34
Architettura: x86_64 (64bit)

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da Frank_C » 11 marzo 2016, 19:44

SERVIZIO POSTERI:

Codice: Seleziona tutto

gedit /etc/sysctl.conf
vm.swappiness = 15
vm.min_free_kbytes =1000000
vm.compact_memory =1
P.S per la compact_memory è necessario prima attivare
CONFIG_COMPACTION ho cercato con google ma non non ho trovato informazioni al riguardo..quindi in realta' ho aggiunto soltanto le prime due righe del file

Avatar utente
TheSaint
Robin Hood
Messaggi: 7935
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: Swap-Linux e Memoria Virtuale-Windows

Messaggio da TheSaint » 12 marzo 2016, 6:14

Io ho trovato questo cercando con swappiness site:kernel.org
Se non lo sanno quelli del kernel.... :mrgreen: :mrgreen:
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

Rispondi