compcache - compressed in-memory swap device for Linux

Programmideen und -anregungen passen hier hinein.
Antworten
Autor
Nachricht
Benutzeravatar
eworm
8 Bit
Beiträge: 413
Registriert: Do Sep 21, 2006 14:30
Wohnort: Oberhausen
Kontaktdaten:

compcache - compressed in-memory swap device for Linux

#1 Beitrag von eworm » Mo Dez 28, 2009 14:47

Hallo zusammen!

Ganz schön ruhig hier heute... Warten alle auf irgendwelche News? :unsure: :-D

Ok, will ich mal wieder für ein wenig Diskussionsstoff sorgen. Ich habe gerade ein interessantes Projekt aufgestöbert: compcache - compressed in-memory swap device for Linux

Die Idee dabei ist ein Swapdevice im RAM anzulegen, in das die Daten komprimiert abgelegt werden. Geht dem System also der Speicher aus werden Daten komprimiert und wieder in den RAM gelegt, der unkomprimierten Speicher kann dann freigegeben werden. Werden die Daten wieder gebraucht werden sie einfach dekomprimiert und können dann wieder gebraucht werden. Gerade für die Pandora dürfte das interessant sein - vor allem wenn man das kleine Ding als Netbook benutzen und viele Programme gleichzeitig starten will. Das Komprimieren und Dekomprimieren kostet zwar etwas Rechenleistung, es dürfte aber immernoch schneller sein als die Daten irgendwo auf Flash-Speicher zu schreiben - und besser für NAND und SD-Karten ist es allemal.
Ich werde das auf jeden Fall mal ausprobieren wenn es so weit ist. Bin schon echt gespannt...

Schöne Grüße
Chris

Benutzeravatar
Lockenlord
9 Bit
Beiträge: 768
Registriert: Sa Mär 07, 2009 11:54
Wohnort: Leipzig
Kontaktdaten:

Re: compcache - compressed in-memory swap device for Linux

#2 Beitrag von Lockenlord » Mo Dez 28, 2009 15:41

Eine Swap-Partition ist ja dafür gedacht gerade nicht gebrauchte Daten aus dem Arbeitsspeicher auf der Festplatte auszulagern, mit diesem Programm werden also Daten aus dem Arbeitsspeicher im Arbeitsspeicher abgelegt. :lol:
OK, ernsthaft, die Idee ist auf jeden Fall gut, aber ich kann mir gut vorstellen, dass es nur dann wirklich was bringt, wenn man im Desktopbetrieb viele Programme parallel laufen haben will. Dann muss ein schneller, möglichst effizienter Kompressionsalgorithmus her, damit die Pandora nicht merklich langsamer wird und die Daten beim Komprimieren trotzdem deutlich kleiner werden. Dann ist die Frage, wie viel Speicher das Programm selbst zum Komprimieren braucht und ob und wie viel Speicher man dafür reservieren muss.
Kann irgendjemand sagen, wie sich das Programm so macht und ob dem höheren Energieverbrauch auch eine bessere Leistung gegenübersteht?

grond

Re: compcache - compressed in-memory swap device for Linux

#3 Beitrag von grond » Mo Dez 28, 2009 16:54

Lockenlord hat geschrieben:Dann muss ein schneller, möglichst effizienter Kompressionsalgorithmus her, damit die Pandora nicht merklich langsamer wird und die Daten beim Komprimieren trotzdem deutlich kleiner werden. Dann ist die Frage, wie viel Speicher das Programm selbst zum Komprimieren braucht und ob und wie viel Speicher man dafür reservieren muss.
Kann irgendjemand sagen, wie sich das Programm so macht und ob dem höheren Energieverbrauch auch eine bessere Leistung gegenübersteht?
Ohne den Link angeguckt zu haben, gehe ich eine Wette ein, dass da einfach der beliebte gzip-Algorithmus verwendet wird, der dann auf Speicherseiten angewendet wird. ARM-Code lässt sich ziemlich gut komprimieren, ich schätze, da müsste so ein Gewinn von durchschnittlich 40 bis 60% möglich sein, wenn Code aus dem Arbeitsspeicher in den komprimierten Swap-Arbeitsspeicher geschoben wird. Die Implementierung der Algorithmen dürfte so im niedrigen zweistelligen Kilobytebereich liegen, also wirklich fast keinen Arbeitsspeicher belegen. Aber irgendwie erinnert mich das an die verschiedenen Mem-Doubler-Scherze auf dem Amiga und dem PC... :)

Benutzeravatar
eworm
8 Bit
Beiträge: 413
Registriert: Do Sep 21, 2006 14:30
Wohnort: Oberhausen
Kontaktdaten:

Re: compcache - compressed in-memory swap device for Linux

#4 Beitrag von eworm » Mo Dez 28, 2009 17:09

Nicht ganz, es wird LZO benutzt. ;)
Beim Rest muss ich dir aber zustimmen... Vom Speicherplatz braucht der Kram selbst kaum was. Wirklich effizient getestet habe ich es aber noch nicht, zu viel RAM im Notebook. :P Vielleicht sollte ich mal mit MEMSIZE=256MB booten. :rotfl:

Die Mem-Doubler-Scherze sind mir irgendwie entgangen... War wohl vor meiner Zeit. Was hatte es denn damit auf sich?

Benutzeravatar
MiniSinisterMinister
8 Bit
Beiträge: 374
Registriert: So Okt 12, 2008 17:14

Re: compcache - compressed in-memory swap device for Linux

#5 Beitrag von MiniSinisterMinister » Mo Dez 28, 2009 17:43

Wenn ich das richtig verstehe, dann hat das den gleichen Effekt wie das temporäre Swappen von Daten aus dem Hauptspeicher auf die Festplatte. Bei einem System mit eigentlich zu kleinem Speicher können so Programme laufen, die eigentlich für mehr Hauptspeicher ausgelegt sind. Allerdings wird das Arbeiten dann ziemlich zäh. Es ist also eher eine Notlösung für zu schlecht ausgestatte Systeme. Wenn das hier vom Prinzip her genauso funktioniert und dieselben Nachteile hat (stark spürbare Verzögerungen), dann würde ich eher kein Programm nutzen wollen, das darauf angewiesen ist bzw. einfach auf mehrere geöffente Programme gleichzeitig verzichten.
What can I do with the Pandora handheld and how well does it really work?
Visit my "micro-guide" to Pandora software at http://pandoranut.blog.com

Benutzeravatar
eworm
8 Bit
Beiträge: 413
Registriert: Do Sep 21, 2006 14:30
Wohnort: Oberhausen
Kontaktdaten:

Re: compcache - compressed in-memory swap device for Linux

#6 Beitrag von eworm » Mo Dez 28, 2009 17:57

So, ich quäle gerade mein Notebook ein wenig... :juhu:

Also gebootet habe ich mit dem Kernelparameter mem=256M - mein System läuft also tatsächlich nur mit 256MB RAM. Der erste Login war echt hart... Alles was so im Hintergrund läuft, und dann von KDM in ein komplettes KDE 4.3 einloggen. :dash:
Also wieder ausgeloggt, apache und mysql gestoppt ;) (läuft immernoch genug Blödsinn...) und compcache aktiviert. Und siehe da, es ist zwar kein Geschwindigkeitswunder, funktioniert aber. Ich bin jetzt in KDE eingeloggt, habe Konsole und Konqueror auf und schreibe diese Post.

Interessant finde ich die Statistik dazu. Ich habe compcache aktuell mit BackingSwap aktiviert, was compcache nicht komprimieren kann oder will kann es so tatsächlich auf die Swap-Partition schreiben. Es gibt aber trotzdem deutlich mehr Aktivität im RAM als auf Platte. Bemerkenswert finde ich die Zeilen mit dem DataSize... Es schein tatsächlich ein Verhältnis von 4:1 von unkomprimierten zu komprimierten Daten zu geben.

Code: Alles auswählen

BackingSwap:    /dev/mapper/vg-swap
DiskSize:        2097152 kB
MemLimit:          37828 kB
NumReads:          12693
NumWrites:         32835
FailedReads:           0
FailedWrites:          0
InvalidIO:             0
ZeroPages:          2879
GoodCompress:        100 %
NoCompress:            0 %
PagesStored:       22264
PagesUsed:          5735
OrigDataSize:      89056 kB
ComprDataSize:     22701 kB
MemUsedTotal:      22940 kB
BDevNumReads:       3653
BDevNumWrites:      7692
Ich glaube gleich versuche ich mal XFCE ohne KDM davor. Ich denke mit der Pandora lässt sich doch schon so einiges machen. ^_^

Benutzeravatar
Lockenlord
9 Bit
Beiträge: 768
Registriert: Sa Mär 07, 2009 11:54
Wohnort: Leipzig
Kontaktdaten:

Re: compcache - compressed in-memory swap device for Linux

#7 Beitrag von Lockenlord » Mo Dez 28, 2009 19:03

Hast du schon geguckt, wie sich das Programm auf die Akkulaufzeit auswirkt?

Benutzeravatar
Morchel
8 Bit
Beiträge: 476
Registriert: Mo Nov 09, 2009 17:19

Re: compcache - compressed in-memory swap device for Linux

#8 Beitrag von Morchel » Mo Dez 28, 2009 19:31

eworm hat geschrieben:Also wieder ausgeloggt, apache und mysql gestoppt ;) (läuft immernoch genug Blödsinn...) und compcache aktiviert.
Heißt also, dass compcache während der Sitzung ohne Komplikation gestartet und und beendet werden kann (nur um nochmal sicher zu gehen)?
Gerade, wenn man vielleicht seltener den RAM "überreizt" (wird sich ja erst zeigen, wenn man das Gerät verwendet) praktisch. So aktiviert man das ganze nur dann, wenn es wirklich nötig ist. Vor allem auch dann, falls es merklich Akku frisst, wie Lockenlord ebenso befürchtet.

Benutzeravatar
eworm
8 Bit
Beiträge: 413
Registriert: Do Sep 21, 2006 14:30
Wohnort: Oberhausen
Kontaktdaten:

Re: compcache - compressed in-memory swap device for Linux

#9 Beitrag von eworm » Mo Dez 28, 2009 19:42

Lockenlord hat geschrieben:Hast du schon geguckt, wie sich das Programm auf die Akkulaufzeit auswirkt?
Nein, keine Ahnung was sich da tut. Ist die Frage ob sich das so genau bestimmen lässt... Aber ich denke das Bisschen Rechnen braucht nicht so viel Strom wie das Schreiben und Lesen von/auf Platte.
Und bei einem ARM-Prozessor mache ich mir da eh wenig Sorgen...
Morchel hat geschrieben:Heißt also, dass compcache während der Sitzung ohne Komplikation gestartet und und beendet werden kann (nur um nochmal sicher zu gehen)?
Gerade, wenn man vielleicht seltener den RAM "überreizt" (wird sich ja erst zeigen, wenn man das Gerät verwendet) praktisch. So aktiviert man das ganze nur dann, wenn es wirklich nötig ist. Vor allem auch dann, falls es merklich Akku frisst, wie Lockenlord ebenso befürchtet.
Klar, du brauchst ja nur das Swap-Device wieder abschalten. Schiefgehen kann das nur dann, wenn du nicht ausreichend physikalischen RAM hast um die ausgelagerten Daten wieder einzulagern - dann musst du halt erstmal Programme beenden.

grond

Re: compcache - compressed in-memory swap device for Linux

#10 Beitrag von grond » Mo Dez 28, 2009 19:45

eworm hat geschrieben:Nicht ganz, es wird LZO benutzt. ;)
Aha. Habe gerade einmal nachgelesen, was das ist. Es ist ein weiteres Derivat des Ziv-Lempel-Algorithmusses, wie es übrigens auch gzip ist, also lag ich relativ nah. Diese Familie von Algorithmen ist einfach sehr gut geeignet für in etwa gleichschnelles Packen und Entpacken bei einem guten Verhältnis von Aufwand und Resultat.

Vom Speicherplatz braucht der Kram selbst kaum was.
Ich meine, gerade etwas von 5KB gelesen zu haben... :)

Die Mem-Doubler-Scherze sind mir irgendwie entgangen... War wohl vor meiner Zeit. Was hatte es denn damit auf sich?
Das waren so Programme, die irgendwelche Tricks ausgenutzt haben, um dem Betriebssystem und dem User vorzugaukeln, es wäre plötzlich mehr Speicher verfügbar. Dazu wurde dann eine wilde Geschichte erzählt, dass da schnelle Kompression und Dekompression benutzt wird, um mehr Speicher freizuhalten. Also im Grunde exakt das, was hier tatsächlich gemacht wird. Es gab sogar ein betrügerisches kommerzielles Programm für den PC, das diese Augenwischerei betrieben hat. Damals waren auch so Festplattenverdoppelerprogramme weit verbreitet. Die haben aber wenigstens auch tatsächlich funktioniert, so dass auf die Sache mit dem RAM mehr Leute hereinfallen konnten.

Lockenlord hat geschrieben:Hast du schon geguckt, wie sich das Programm auf die Akkulaufzeit auswirkt?
Ich kann mir kaum vorstellen, dass es da einen messbaren Effekt gibt. In der Doku zu LZO steht übrigens drin, dass eine auf 386 optimierte Variante, es auf ein Drittel der Geschwindigkeit eines einfachen memcpy() bringt, was ziemlich beachtlich ist. Da scheint allerdings von einem Pentium-133 die Rede zu sein, heutige Rechner (Taktverhältnis Prozessor/Speicher eher höher) könnten das noch schneller hinbekommen.

Da ich gerne (optimierten) Assemblercode programmiere und auf ARM auch einige Erfahrung habe, mache ich mir mal eine Gedächtnisnotiz, dass sich ein Blick auf den LZO-Kram als Ziel lohnen könnte... :)

Benutzeravatar
SebuSoft
7 Bit
Beiträge: 183
Registriert: Do Feb 05, 2009 23:39

Re: compcache - compressed in-memory swap device for Linux

#11 Beitrag von SebuSoft » Do Jan 14, 2010 10:54

grond hat geschrieben:Das waren so Programme, die irgendwelche Tricks ausgenutzt haben, um dem Betriebssystem und dem User vorzugaukeln, es wäre plötzlich mehr Speicher verfügbar. Dazu wurde dann eine wilde Geschichte erzählt, dass da schnelle Kompression und Dekompression benutzt wird, um mehr Speicher freizuhalten. Also im Grunde exakt das, was hier tatsächlich gemacht wird. Es gab sogar ein betrügerisches kommerzielles Programm für den PC, das diese Augenwischerei betrieben hat. Damals waren auch so Festplattenverdoppelerprogramme weit verbreitet. Die haben aber wenigstens auch tatsächlich funktioniert, so dass auf die Sache mit dem RAM mehr Leute hereinfallen konnten.
Oh ja da kann ich mich auch noch dran erinnern die Programme hatten irgendeine System-Datei von Windows 3.x so ümgeschrieben das sie mehr RAM angezeigt hat sonnst aber nichts gemacht und dafür haben dann auch viele Leute noch Geld für bezahlt.... Abzocke hoch 10! Aber das mit der Festplatte hat natürlich funktioniert eines der Programme würde ja auch gleich mit DOS bzw. auch später bei win9x direkt von MS mitgeliefert DoubleSpace (später Drivespace weil es halt doch nicht ganz verdoppelt hat :-D) Hab ich damals bei meiner 512MB Festplatte benutzt :-D
grond hat geschrieben:Ich kann mir kaum vorstellen, dass es da einen messbaren Effekt gibt. In der Doku zu LZO steht übrigens drin, dass eine auf 386 optimierte Variante, es auf ein Drittel der Geschwindigkeit eines einfachen memcpy() bringt, was ziemlich beachtlich ist. Da scheint allerdings von einem Pentium-133 die Rede zu sein, heutige Rechner (Taktverhältnis Prozessor/Speicher eher höher) könnten das noch schneller hinbekommen.

Da ich gerne (optimierten) Assemblercode programmiere und auf ARM auch einige Erfahrung habe, mache ich mir mal eine Gedächtnisnotiz, dass sich ein Blick auf den LZO-Kram als Ziel lohnen könnte... :)
Jip die ganzen Lempel-Ziv-"derivate" sind ja echte optimierungs Wunder da sie ja nur einmal von Anfang zum Ende über die Daten gehen und auch sonst keine wirklich komplizierten Suchen/Vergleiche oder ähnliches benötigen. Geht mir nämlich genauso ich Liebe es einfach Assemblercode immer weiter zu optimieren und noch kleiner und noch schneller zu machen (auch wenn das natürlich nicht immer das selbe ist :-D ) den LZW hatte ich mir z.B. auch mal vorgenommen ich kann nun aber nicht mehr sagen wie die Ergebnisse waren ist zu lange her und ich hab das alles leider bei einem Festplattencrash Verloren... Falls du dich für sowas interessierst, kennst du die FNV Hash-Funktion? Auch so eine schöne kleine Funktion die man extrem gut in ASM optimieren kann.

Ok Sorry fürs OffTopic :-)

Aber das wäre doch eigentlich keine Schlechte Idee mit diesem compcache. Ich denke das könnte wirklich Hilfreich sein damit wir nochmehr aus der Pandora herausholen können als eh schon. Klar braucht natürlich etwas Prozessorleistung aber ich denke wenn dann wird der RAM später eher das Problem sein, zumindest beim Arbeiten auf der Pandora mit mehreren Programmen gleichzeitig z.B. schreibt man mit Abiword ein Text will dafür mit Firefox etwas nachschauen und gleichzeitig dann vielleicht noch seine E-Mail's abfragen und Musik hören etc... Ich denke der Cortex würde das so hinbekommen aber FireFox z.B. ist ja nun nicht gerade für seinen geringen Speicherverbrauch bekannt! :-D

Benutzeravatar
Evil Azrael
6 Bit
Beiträge: 109
Registriert: Mi Jan 20, 2010 22:14
Wohnort: Rheinkilometer 666 & hinter Heidelberg
Kontaktdaten:

Re: compcache - compressed in-memory swap device for Linux

#12 Beitrag von Evil Azrael » Fr Feb 19, 2010 01:14

http://en.wikipedia.org/wiki/SoftRAM
Das ist das Programm. Das fiel mir auch direkt ein, als ich die Nachricht bei Heise las.
War, War never changes... The end of the world occurred pretty much as we had predicted. Too many humans, not enough space or resources to go around. The details are trivial and pointless, the reasons, as always, purely human ones. A great cleansing, an atomic spark struck by human hands, quickly raged out of control, spears of nuclear fire rained from the skies, continents were swallowed in flames and fell beneath the boiling oceans....

God bless Germany! Bild

Benutzeravatar
Thrake
11 Bit
Beiträge: 2400
Registriert: Do Aug 25, 2005 21:08
Wohnort: München
Kontaktdaten:

Re: compcache - compressed in-memory swap device for Linux

#13 Beitrag von Thrake » Fr Feb 19, 2010 16:34

Lockenlord hat geschrieben:Eine Swap-Partition ist ja dafür gedacht gerade nicht gebrauchte Daten aus dem Arbeitsspeicher auf der Festplatte auszulagern, mit diesem Programm werden also Daten aus dem Arbeitsspeicher im Arbeitsspeicher abgelegt. :lol:
genau das habe ich mir auch gedacht...
Kann mir nochmal einer den Sinn erklären???

Mal ne andere Frage: Wie hoch ist denn die Übertragung vom RAM zum CPU und wie hoch die Übertragung von der SD-Karte zum CPU?

retn
9 Bit
Beiträge: 581
Registriert: Do Jan 07, 2010 09:12

Re: compcache - compressed in-memory swap device for Linux

#14 Beitrag von retn » Fr Feb 19, 2010 18:00

Thrake hat geschrieben:
Lockenlord hat geschrieben:Eine Swap-Partition ist ja dafür gedacht gerade nicht gebrauchte Daten aus dem Arbeitsspeicher auf der Festplatte auszulagern, mit diesem Programm werden also Daten aus dem Arbeitsspeicher im Arbeitsspeicher abgelegt. :lol:
genau das habe ich mir auch gedacht...
Kann mir nochmal einer den Sinn erklären???

Mal ne andere Frage: Wie hoch ist denn die Übertragung vom RAM zum CPU und wie hoch die Übertragung von der SD-Karte zum CPU?
Die Daten die in den Arbeitsspeicher gelegt werden sind komprimiert, d.h. du hast eine komprimierte Swap-Datei im Arbeitsspeicher.
Standardmässig werden 15% des Arbeitsspeichers als Swap genutzt und komprimiert, das ganze wird von "free" übrigens als Swap erkannt.

Test auf der Homepage von compcache zeigen bei VMs mit 512mb Ram mit compcache einen Geschwindigkeitsvorteil von 33% (http://code.google.com/p/compcache/wiki/scanbench)

Wie groß der Unterschied bei der Pandora ist müsste man mal testen.

Antworten

Zurück zu „Ideen und Wünsche“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast