Forum: PC Hard- und Software Speichervirtualisierung


von Trump (Gast)


Lesenswert?

Hatte eine Diskussion mit einem Freund, der behauptete, dass man durch 
Speichervirtualisierung mehr Speicher nutzen kann, als physisch 
tatsächlich vorhanden ist.

Ist da was dran?

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?


von Trump (Gast)


Lesenswert?

Dein Artikel beschreibt die virtuelle Speicherverwaltung. Kann man das 
mit Speichervirtualisierung gleichsetzen?

Speichervirtualisierung: 
https://www.itwissen.info/Speichervirtualisierung-storage-virtualization.html

von Schtromäkspärte (Gast)


Lesenswert?

Trump schrieb:
> Dein Artikel beschreibt die virtuelle Speicherverwaltung. Kann man
> das
> mit Speichervirtualisierung gleichsetzen?

Nu klar.

von Alter Sack (Gast)


Lesenswert?

Trump schrieb:
> Hatte eine Diskussion mit einem Freund, der behauptete, dass man durch
> Speichervirtualisierung mehr Speicher nutzen kann, als physisch
> tatsächlich vorhanden ist.
>
> Ist da was dran?

Ja und nein, abhängig von der Definition von "nutzen".

Man kann es so einrichten dass nur soviel Plattenplatz belegt wird wie 
momentan tatsächlich gebraucht wird, während man soviel als Maximum 
konfigurieren kann wie man denkt dass es mal werden könnten. Dieses 
Maximum kann mehr sein als man physisch hat.

Z.B. auf einer 1 TiB Festplatte 10 virtuelle Maschinen zu je 500 GiB 
(konfiguriert) und in jede erstmal nur ein Linux/Windows installiert - 
kein Ding.

Wenn man aber dann versucht jede der VMs mit 200 GiB Daten "aufzufüllen" 
wird das natürlich nicht gehen.

Kannst Du mit sowas wie Virtualbox selber ausprobieren, ähnlich wäre das 
mit irgendwelchen Enterprise Storages.

There ain't no such thing as a free lunch.

von S. R. (svenska)


Lesenswert?

Trump schrieb:
> Hatte eine Diskussion mit einem Freund, [...]

Is kla.

> Ist da was dran?

Ja, solange du mit "Speicher" nur den Arbeitsspeicher meinst und du dich 
auf den verfügbaren Adressraum beschränkst. Wenn tatsächlich weder 
Speicher noch Adressraum verfügbar ist, ist Schluss.

von Herr Troll (Gast)


Lesenswert?

Wenn der RAM nicht reicht, wird oft ausgelagert.
Haken ist nur, daß RAM schneller ist, als irgendwelche Platten.

von Schtromäkspärte (Gast)


Lesenswert?

> Wenn der RAM nicht reicht, wird oft ausgelagert.
> Haken ist nur, daß RAM schneller ist, als irgendwelche Platten.

Diese Aussage stimmt zwar, aber man sollte das mal über PC-Generationen 
vergleichen. Also testen wie schneller  ein Swappen auf SSD (Stand 2020) 
gegenüber einen Speicherzugriff auf SDRAM (Stand 2000) oder ein Swappen 
auf HDD ist. Die Transferraten von HDD auf ATA/SATA/PCIe unterscheiden 
sich doch erheblich und mit Buffer/cache lässt sich einiges abfängen.

Könnte sein, das man im realen Betrieb heute den tatsächlichen 
Unterschied zwischen RAM und Swap-space kaum bemerkt.

https://www.enterprisestorageforum.com/imagesvr_ce/8869/SSD-HDD-speed.jpg

von (prx) A. K. (prx)


Lesenswert?

Alter Sack schrieb:
> Kannst Du mit sowas wie Virtualbox selber ausprobieren, ähnlich wäre das
> mit irgendwelchen Enterprise Storages.

Deduplication gibts nicht nur im Enterprise, sondern mittlerweile 
teilweise auch in Allerwelts-NAS. Das ist auch im PC verfügbar, wenn ZFS 
oder btrfs zum Einsatz kommen.

Im Zusammenhang mit VMs wird das so richtig lohnend, wenn viele 
praktisch gleiche VMs zusammen kommen. Besonders krass ist das dann bei 
virtualisierten Desktops (vgl Citrix) mit Hunderten gleicher VMs.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Schtromäkspärte schrieb:
> Könnte sein, das man im realen Betrieb heute den tatsächlichen
> Unterschied zwischen RAM und Swap-space kaum bemerkt.

Wobei man bei Storage nicht nur den Durchsatz betrachten sollte, sondern 
auch die Zugriffszeit. Auch da sind SSDs zwar in früher gänzlich 
ungewohnte Dimensionen vorgestossen, aber zum einzelnen Byte in einem 
SSD-Block ist der Weg schon noch länger, als der zum DRAM.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Trump schrieb:
> Hatte eine Diskussion mit einem Freund, der behauptete, dass man durch
> Speichervirtualisierung mehr Speicher nutzen kann, als physisch
> tatsächlich vorhanden ist.

Besonders, wenn man dann auch noch die Page Tables des virtuellen 
Speichers selber in den virtuellen Speicher verlagert, und somit 
auslagern kann. Da kommt man dann notfalls auch komplett ohne RAM für 
Anwenderprozesse aus. Anno DEC VAX war RAM sauteuer. ;-)

von S. R. (svenska)


Lesenswert?

Schtromäkspärte schrieb:
> Die Transferraten von HDD auf ATA/SATA/PCIe unterscheiden sich
> doch erheblich und mit Buffer/cache lässt sich einiges abfängen.

Ein XT-IDE mit CompactFlash-Karte auf einem PC/XT oder AT ist exakt so 
schnell wie der RAM im gleichen System, d.h. SmartDrive und ähnliche 
Cache-Algorithmen sind der Leistungsfähigkeit grundsätzlich abträglich.

Damit hätte vermutlich damals niemand gerechnet.

von (prx) A. K. (prx)


Lesenswert?

S. R. schrieb:
> Ein XT-IDE mit CompactFlash-Karte auf einem PC/XT oder AT ist exakt so
> schnell wie der RAM im gleichen System, d.h. SmartDrive und ähnliche
> Cache-Algorithmen sind der Leistungsfähigkeit grundsätzlich abträglich.

Dieser Logik entsprechend könnte man eigentlich auch Magnetband statt 
RAM verwenden, ohne an Leistungsfähigkeit zu verlieren. ;-)

von Trump (Gast)


Lesenswert?

Vielen Dank für die hilfreichen Antworten,

wenn ich das, was bisher gesagt wurde, zusammenfasse, dann komme ich zu 
dem Ergebnis, dass es nicht die Speichervirtualisierung gibt, sondern 
unterschiedliche Arten von Speichervirtualisierungen. Ich habe 
mitgenommen, dass man sowohl RAM als auch Festplattenspeicher 
virtualisieren kann und dass man zwischen der Speichervirtualisierung 
auf einem lokalen Destop-PC und der Speichervirtualisierung im Server- 
und Cloud-Umfeld unterscheidet.

Ich habe mal eine grobe Unterscheidung hinsichtlich 
Speichervirtualisierung auf dem lokalen Desktop-PC, dem physischen 
Server und bei Cloud-Providern (Virtuelle Maschinen) getroffen. Ist 
diese Einteilung denkbar und unsinn?

a) Auf dem Desktop besteht die Möglichkeit, z. B. RAM mithilfe einer 
Auslagerungsdatei, die sich auf der Festplatte befindet, zu 
virtualisieren. Die Auslagerungsdatei wird so verwendet, dass es sich um 
Arbeitsspeicher handelt. Festplattenspeicher könnte auf lokalen 
Desktop-PCs mithilfe eines RAID-Verbundes virtualisieren werden.

b)Bei einer Server-Client-Architektur (physikalisch nicht virtuell) muss 
der Server über ausreichend RAM und Festplattenspeicher verfügen, z. B. 
um Streaming zu ermöglichen. RAM könnte ebenfalls in Form einer 
Auslagerungsdatei virtualisiert werden. Festplattenspeicher ebenfalls 
über einen RAID-Verbund. Zusätzlich könnte man den Server auch über ein 
SAN mit Speicher versorgen.

b) Dann gibt es möglicherweise auch in Rechenzentren und bei 
Cloud-Provider (z. B. Desktop as a Service-, Infrastructure as a 
Service-, V-Server-  oder Webserver-Provider), umfangreiche 
Speichervirtualisierungen. Hier gehe ich mal davon aus, dass mit 
virtuellen Maschinen gearbeitet wird. Im Hintergrund befindet sich 
womöglich ein großangelegtes SAN, das enorme Menge an Speicher für die 
Verwendung als RAM und/oder Festplattenspeicher in virtuellen Maschinen 
konsolidiert.

Bei allen oben genannten Alternativen, davon gehe ich jetzt mal aus, 
kann doch nicht mehr Speicher adressiert und belegt werden, als rein 
physikalisch zur Verfügung steht, oder?

Wegen des ganzen Begriffswirrwarrs bin ich mir langsam nicht mehr 
sicher, was Virtualisierung eigentlich ganz konkret bedeutet.

Entweder wird ein großer physischer Speicher in z. B. mehrere kleine 
logische Speicherbreiche unterteilt oder viele einzelne physische 
Speicher werden konsolidiert und erscheinen dem Anwender als einzelne 
logische Einheit.

Ich Danke Euch!

von (prx) A. K. (prx)


Lesenswert?

Trump schrieb:
> Festplattenspeicher könnte auf lokalen
> Desktop-PCs mithilfe eines RAID-Verbundes virtualisieren werden.

Ein RAID Verbund ist keine Virtualisierung.

von Planloser (Gast)


Lesenswert?

Trump schrieb:
> Bei allen oben genannten Alternativen, davon gehe ich jetzt mal aus,
> kann doch nicht mehr Speicher adressiert und belegt werden, als rein
> physikalisch zur Verfügung steht, oder?


Doch, kann es wohl. Wird unter gängigen Betriebssystemen wie Linux auch 
gemacht.
Heißt dann KSM (Kernel Samepage Merging).
Dabei wird dann genau wie bei der Storage-Deduplizierung dieselbe 
Speicherseite in verschiedenen Prozessen eingeblendet. Insbesondere bei 
Virtualisierungs-Hosts mit vielen VMs derselben Distribution und 
idealerweise gleichen Diensten bringt das viel.
Kostet allerdings ein bisschen Performance und ist schwächt unter 
Umständen die Sicherheit (Timing-Attacken, etc.).

von c-hater (Gast)


Lesenswert?

Trump schrieb:

> wenn ich das, was bisher gesagt wurde, zusammenfasse, dann komme ich zu
> dem Ergebnis, dass es nicht die Speichervirtualisierung gibt, sondern
> unterschiedliche Arten von Speichervirtualisierungen.

Besser treffend: Es gibt mehrere Ebenen der Speichervirtualisierung 
(kann es zumindest geben).

Bei praktisch jedem aktuellen OS gibt es folgende Mechanismen:
- virtueller Speicherzugriff (im Sinne von: address remapping zwischen 
einem
  virtuellen Adressraum und dem Addressraum des physischen Speichers)
- Auslagerung (selten oder nie benutzte Teile des virtuellen Adressraums
  werden auf Massenspeicher ausgelagert oder erst garnicht mit 
physischem
  Speicher hinterlegt)
- Datenträgercache (ungenutzter physischer Speicher wird als Cache für
  Datenträger-Blöcke verwendet)

Diese drei Mechanismen laufen ständig parallel. Der erste ist nur eine 
reine Übersetzung, zieht also außer einem Lookup in der 
Übersetzungstabelle (die immer im physischen Speicher ist) keine 
weiteren Folgen nach sich. Die anderen beiden Sachen konkurrieren 
hingegen schon in einem gewissen Umfang. Es ist also sehr leicht 
möglich, dass umfangreiche Zugriffe auf Massenspeicher Teile des 
Programmcodes aus dem physischen Speicher verdrängen.

Aber das ist nur die OS-Ebene der Virtualisierung. Darüber kann dann 
noch die Virtualisierung des OS selber durch einen Hypervisor sitzen. 
Dann wird das alles noch einen Zacken komplexer.

von Alter Sack (Gast)


Lesenswert?

(prx) A. K. schrieb:
> Alter Sack schrieb:
>> Kannst Du mit sowas wie Virtualbox selber ausprobieren, ähnlich wäre das
>> mit irgendwelchen Enterprise Storages.
>
> Deduplication gibts nicht nur im Enterprise, sondern mittlerweile
> teilweise auch in Allerwelts-NAS. Das ist auch im PC verfügbar, wenn ZFS
> oder btrfs zum Einsatz kommen.

Wobei Deduplication (oder auch Datenkompression) nicht wirklich mit 
Virtualisierung vom Storage zu tun hat, das ist eher so zufällig 
zusammen aufgetreten weil es eben praktisch und gut machbar war.

> Im Zusammenhang mit VMs wird das so richtig lohnend, wenn viele
> praktisch gleiche VMs zusammen kommen. Besonders krass ist das dann bei
> virtualisierten Desktops (vgl Citrix) mit Hunderten gleicher VMs.

Ja, da bringt das richtig Punkte. Wobei man streng genommen immer noch 
nicht mehr Speicher benutzen kann als man wirklich hat - man benutzt den 
vorhandenen nur auf schlauere Weise.

von (prx) A. K. (prx)


Lesenswert?

Alter Sack schrieb:
> oder auch Datenkompression

Die existiert im gewöhnlichen NTFS bereits seit NT 3.51. Ist allerdings 
auch etwas einfacher machbar als Deduplication, was die interne Struktur 
des Filesystems angeht.

Bei COW Filesystemen gibts Dedup fast von alleine, aber auch NTFS hat 
das mittlerweile beim Server drauf. Beides zusammen soll allerdings bei 
NTFS ein prima Weg ins Desaster sein.

: Bearbeitet durch User
von Trump (Gast)


Lesenswert?

@c-hater, danke für die Rückmeldung.

Wirft bei mir aber folgende Frage auf: Was passiert im Hintergrund, wenn 
man einen Desktop in einer Cloud bucht und sich irgendwann entscheidet, 
den Arbeitsspeicher von 16 auf 32 GB aufzurüsten?

Ist das dann so, dass der Hypervisor aus einem Pool bestehend aus 
Platten, den Speicher ähnlich wie bei der Auslagerungsdatei zur 
Verfügung stellt?

von Trump (Gast)


Lesenswert?

Planloser schrieb:
> Doch, kann es wohl. Wird unter gängigen Betriebssystemen wie Linux auch
> gemacht.
> Heißt dann KSM (Kernel Samepage Merging).

@Planloser muss man nicht Kernel same-page merging als Sondefall 
betrachten? Die Technik bezieht sich ja nur auf den Fall, dass VMs 
identische Inhalte teilen.

Grundsätzlich kann man doch aber nicht sagen, dass man durch 
Speichervirtualisierung wie aus Zauberhand aus 8 GB z.B 16 GB macht, 
wovon dann 8 GB nur virtuell sind. Die ausgelagerten Speicherwörter sind 
ja trotzdem physikalisch irgendwo vorhanden z. B. auf einer Platte. 
Virtuell ist doch nur der Adressraum oder etwa nicht?

von (prx) A. K. (prx)


Lesenswert?

Trump schrieb:
> Wirft bei mir aber folgende Frage auf: Was passiert im Hintergrund, wenn
> man einen Desktop in einer Cloud bucht und sich irgendwann entscheidet,
> den Arbeitsspeicher von 16 auf 32 GB aufzurüsten?

Bei VMs, Cloud oder nicht, fängt RAM schon zunächst beim RAM an. Disk 
kommt viel später. Aber erst einmal nur in der Definition der VM. Was 
zwar aus Sicht der VM dann entsprechend mehr wird, aber so lange OS und 
Anwendungen in der VM nicht darauf zugreifen, gibt es dieses zusätzliche 
RAM nicht wirklich. Erst beim Zugriff wird es real zugewiesen, nicht 
schon bei der Definition.

So lange der real beanspruchte Speicher aller VMs auf einem Hypervisor 
dessen reales RAM nicht übersteigen, bleibt es dabei. Da kann für die 
VMs zusammen 2 TB verbucht sein, obwohl der Host nur 1 TB RAM hat. Dazu 
kommt, dass gleicher Speicherinhalt gemeinsam genutzt wird. Den Code von 
zigmal dem gleichen Windows und Office brauchts im RAM nur einmal, nicht 
zigmal.

Wenn es da doch mal eng wird, ist nicht zwangsläufig gleich Disk fällig. 
Alternativ kann nämlich der Hypervisor versuchen, der VM wieder RAM 
wegzunehmen. Indem ein spezieller Treiber beim Betriebssystem in der VM 
exklusiven Speicher anfragt und an den Hypervisor durchreicht. Ist die 
billigste Methode, hauptsächlich zu Lasten vom Disk-Cache in der VM.

Reicht das immer noch nicht, dann lagert der Hypervisor auf Disk aus. Da 
kann einiges zusammenkommen, ohne dass es die VMs gross merken, denn der 
Hypervisor hat einen guten Blick dafür, welcher Speicher in letzter Zeit 
überhaupt verwendet wurde. Meistens ist das aktive RAM aus seiner Sicht 
nur ein Bruchteil des zugewiesenen RAMs.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Solche Systeme profitieren von der Masse der VMs und zeitlich gestreuter 
Nutzung. Wenn alle VMs auf einem Hypervisor gleichzeitig voll ins RAM 
gehen, und davon weniger real vorhanden als definiert ist, dann läuft 
das ungefähr so, als ob alle Kunden gleichzeitig ans Geld auf der Bank 
wollen.

Weshalb es im Verbund solcher Hypervisor noch einen weiteren Mechanismus 
gibt: Die transparente Verlagerung von Last zwischen einer Gruppe von 
Hosts, egal ob CPU- oder Speicherlast. Wird es auf einem Host eng, 
verschiebt der Hypervisor die eine oder andere VM auf einen anderen 
Host. Die VM merkt davon praktisch nichts, bei Pings im Netz wird einer 
mal ein wenig verzögert. Es kann dann allerdings passieren, dass sie auf 
einmal auf einer anderen CPU läuft als beim Start - und das ist 
feststellbar, wenn man will.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Trump schrieb:
> @Planloser muss man nicht Kernel same-page merging als Sondefall
> betrachten? Die Technik bezieht sich ja nur auf den Fall, dass VMs
> identische Inhalte teilen.

Das ist einfach nur einer von etlichen Mechanismen. Ein fester Faktor 
kommt dabei nicht raus., keine 16 GB aus 8 GB. Die Masse machts, aber 
das ist ein statistisches Spiel, kein deterministisches.

von Planloser (Gast)


Lesenswert?

Trump schrieb:
> Planloser schrieb:
>> Doch, kann es wohl. Wird unter gängigen Betriebssystemen wie Linux auch
>> gemacht.
>> Heißt dann KSM (Kernel Samepage Merging).
>
> @Planloser muss man nicht Kernel same-page merging als Sondefall
> betrachten? Die Technik bezieht sich ja nur auf den Fall, dass VMs
> identische Inhalte teilen.


Die Technik wurde ursprünglich für KVM (Virtualisierung) entwickelt, 
funktioniert aber natürlich generell, da es nur um den Inhalt der 
Speicherseiten geht, und der ist ja unabhängig vom besitzenden Prozess.
Ein Webserver mit haufenweise Apache-Instanzen profitiert also genauso 
davon.

von Nano (Gast)


Lesenswert?

Wurden eigentlich schon einmal CPUs entwickelt, die vor dem Lesen und 
dem Schreiben in das RAM die Daten erst einmal komprimieren?

Ich dachte da an eine Hardwarekomprimierungseinheit die zwischen Cache 
und RAM liegt.

Und da es thematisch zusammenpasst. Wurde auch schon einmal eine CPU 
gebaut,
die die Daten dann vorher auch noch verschlüsseln bevor sie ins RAM 
abgelegt werden, bzw. entschlüsselt, wenn sie gelesen werden?

Falls ja, welche CPUs unterstützen das?
Und was bringt es effektiv?
Wie hoch ist der Preis zwischen Latenz und eingespartem 
Speicherplatzersparnis wenn der Komprimierungsalgorithus auf eine hohe 
Geschwindigkeit und auf eine geringe Latenz ausgelegt ist zu Kosten der 
Speicherplatzersparnis?

von (prx) A. K. (prx)


Lesenswert?

Nano schrieb:
> Falls ja, welche CPUs unterstützen das?

Geht bei AMD ab Zen, was die RAM Verschlüsselung angeht.
Nutzbar in Red Hat seit 7.5, in VMware seit 7.0U1.
https://www.kernel.org/doc/html/latest/x86/amd-memory-encryption.html

Darf man als wohl ziemlich wirksame Massnahme gegen die diversen Side 
Channel Angriffe wie Spectre&Söhne sehen, ebenfalls bei 
DRAM-Manipulation.

Komprimierung wäre in ähnlicher Weise natürlich problematisch.

: Bearbeitet durch User
von Planloser (Gast)


Lesenswert?

(prx) A. K. schrieb:
> Nano schrieb:
>> Falls ja, welche CPUs unterstützen das?
>
> Geht bei AMD ab Zen, was die RAM Verschlüsselung angeht.
> Nutzbar in Red Hat seit 7.5, in VMware seit 7.0U1.
> https://www.kernel.org/doc/html/latest/x86/amd-memory-encryption.html
>
> Darf man als wohl ziemlich wirksame Massnahme gegen die diversen Side
> Channel Angriffe wie Spectre&Söhne sehen, ebenfalls bei
> DRAM-Manipulation.


Naja:
https://www.youtube.com/watch?v=7AIwe3YbaK8

von Georg (Gast)


Lesenswert?

Nano schrieb:
> die vor dem Lesen und
> dem Schreiben in das RAM die Daten erst einmal komprimieren?

Damit wurden in der Frühzeit der PC-Technik schon viele Millionen 
verdient:
https://de.wikipedia.org/wiki/SoftRAM

Interessant daran ist die Tatsache, dass das Programm völlig 
funktionslos war (ausser die Anzeige des Speichers zu manipulieren), 
dass aber die Benutzer davon überzeugt waren, dass sie mehr Speicher 
haben und der Rechner viel schneller ist.

Fazit, auch für heutige Systeme: das kann ein Notbehelf sein, wenn 
einfach nicht genug RAM da ist, aber ein Ersatz für reales RAM ist es 
nicht.

Georg

von NurIdiotenHier (Gast)


Lesenswert?

Nano schrieb:
> Wurden eigentlich schon einmal CPUs entwickelt, die vor dem Lesen und
> dem Schreiben in das RAM die Daten erst einmal komprimieren?

Das ist schwachsinn weil man die daten im RAM zur weiteren Verarbeitung 
unkomprimiert braucht und/oder sich Opcode nicht gut komprimieren lässt.

Ein sinnvoller Ansatz ware andersrum, RAM der rechnet:
https://www.datacenter-insider.de/was-ist-in-memory-computing-a-890591/

von Nano (Gast)


Lesenswert?

NurIdiotenHier schrieb:
> Nano schrieb:
>> Wurden eigentlich schon einmal CPUs entwickelt, die vor dem Lesen und
>> dem Schreiben in das RAM die Daten erst einmal komprimieren?
>
> Das ist schwachsinn weil man die daten im RAM zur weiteren Verarbeitung
> unkomprimiert braucht

Dafür wäre ja abstrahierende Hardwarezwischenschicht da, die das 
transparent für die CPU macht und der Direktzugriff würde dann auf der 
logischen Ebene über den Cache erfolgen, der deutlich schneller ist als 
RAM.
RAM ist nämlich mit ca. 70 ns ziemlich langsam. Beim Zugriff auf den 
Cache sind es nur ca. 10 ns.
Macht also 60 ns Differenz.
Dazu kommen noch Unterschiede in der Anbindung.

Damit es keine Performancenachteile gibt, müsste das Packen durch die 
Hardwareeinheit (obiges SoftRAM ist ne Softwaregeschichte) natürlich in 
weniger als 60 ns funktionieren.
Anderseits kommts natürlich auch darauf an, ob einem Performance 
überhaupt wichtig ist, es gibt sicherlich Fälle, wo die bei der 
gestellten Anforderung ausreicht und die Arbeitsplatzersparnis wichtiger 
wird.

Da es hier keine nennenswerten Entwicklungen zu geben scheint, dürfte 
man das Problem bisher einfach mit mehr RAM erschlagen haben.

> und/oder sich Opcode nicht gut komprimieren lässt.

Das ist Unsinn. Nimm eine EXE deiner Wahl und komprimiere sie, dann 
wirst du schon sehen, dass man Programme durchaus komprimieren kann.


> Ein sinnvoller Ansatz ware andersrum, RAM der rechnet:
> https://www.datacenter-insider.de/was-ist-in-memory-computing-a-890591/

Der Artikel ist irreführend, da hier nichts "computed" wird.
Das Datenbanken das RAM nutzen ist jetzt auch nichts neues.
Die Wikipedia nennt es übrigens In-Memory-Datenbank und diese 
Bezeichnung macht weitaus mehr Sinn.
https://de.wikipedia.org/wiki/In-Memory-Datenbank

von Nano (Gast)


Lesenswert?

Georg schrieb:
> Nano schrieb:
>> die vor dem Lesen und
>> dem Schreiben in das RAM die Daten erst einmal komprimieren?
>
> Damit wurden in der Frühzeit der PC-Technik schon viele Millionen
> verdient:
> https://de.wikipedia.org/wiki/SoftRAM

Ne Softwarelösung ist überhaupt nicht vergleichbar.

von Nano (Gast)


Lesenswert?

(prx) A. K. schrieb:
> Nano schrieb:
>> Falls ja, welche CPUs unterstützen das?
>
> Geht bei AMD ab Zen, was die RAM Verschlüsselung angeht.
> Nutzbar in Red Hat seit 7.5, in VMware seit 7.0U1.
> https://www.kernel.org/doc/html/latest/x86/amd-memory-encryption.html
>
> Darf man als wohl ziemlich wirksame Massnahme gegen die diversen Side
> Channel Angriffe wie Spectre&Söhne sehen, ebenfalls bei
> DRAM-Manipulation.
>
> Komprimierung wäre in ähnlicher Weise natürlich problematisch.

Danke für den Link.

von NurIdiotenHier (Gast)


Lesenswert?

Nano schrieb:
>> und/oder sich Opcode nicht gut komprimieren lässt.
>
> Das ist Unsinn. Nimm eine EXE deiner Wahl und komprimiere sie, dann
> wirst du schon sehen, dass man Programme durchaus komprimieren kann.

aber schlecht, weil Code zufälligverteilt ist und eine Abfolge gleicher 
codes sehr unwahrscheinlich ist. Hinzukommt kommt das Architekturen auch 
auf kompakten Instruction set optimiert sind, RISC, THUMB

https://de.wikipedia.org/wiki/Arm-Architektur#Thumb-Befehlssatz


Und dann wäre noch die Frage wieviel an einer .exe code und was Header 
ist:

https://en.wikipedia.org/wiki/Portable_Executable#/media/File:Portable_Executable_32_bit_Structure_in_SVG_fixed.svg

https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#/media/File:ELF_Executable_and_Linkable_Format_diagram_by_Ange_Albertini.png

Nano schrieb:
> RAM ist nämlich mit ca. 70 ns ziemlich langsam.

Na da haste aber ein paar Speichergenerationen verschlafen, DDR Ram wird 
inzwischen mit 400 MHz und schneller getaktet.

von Jemand (Gast)


Lesenswert?

NurIdiotenHier schrieb:
> aber schlecht, weil Code zufälligverteilt ist und eine Abfolge gleicher
> codes sehr unwahrscheinlich ist.

70% Reduktion sind aber alles andere als schlecht.

nomen est omen

von oszi40 (Gast)


Lesenswert?

Jemand schrieb:
> 70% Reduktion sind aber alles andere als schlecht.

Die Summe aller Übel bleibt meist gleich. Wer reduziert, muß mehr 
organisieren. Entweder braucht das Zeit oder wird später unübersichtlich 
bei der Fehlersuche.

von NurIdiotenHier (Gast)


Lesenswert?

Jemand schrieb:
> NurIdiotenHier schrieb:
>> aber schlecht, weil Code zufälligverteilt ist und eine Abfolge gleicher
>> codes sehr unwahrscheinlich ist.
>
> 70% Reduktion sind aber alles andere als schlecht.

Doch sind sie. Zumal die 70% ne Luftnummer sind, wenn sie Header und 
initialisierten datasegmente umfasst, die einen Cpu eher nicht 
interessieren. Falls du Dich mit CPU-Architekturen nicht so auskennst, 
kannst das ja auch mit Dateien und Cluster vorstellen, da nutz es auch 
nicht, wenn eine datei von 16k auf 1k eingedampft wird, wenn sie immer 
noch einen Cluster belegt.

Und ich frag mich grad was mit den relativer Addressierung passiert bei 
der Komprimierung. Bspw. stösst die CPU auf einen relativen sprung 
PC+31415 und weis jetzt nicht welchen Block sie entkomprimierensoll, 
weil durch die Komprimierung sich die speicheraddressen verschoben 
haben. Das kann man natürlich umgehen wenn man die Wörter einzeln 
komprimiert, also die Wort-Länge kürzt. Das bring aber nichts, weil ja 
trotzdem alle 32/64 bits einer Zelle geschpeichert werden müssen, auch 
wenn ein teil davon lediglich durch die Komprimierung entstandene 
0-Folgen sind.

Eine pauschale Komprimierung bringt nichts, man kann aber Algorithmen 
entwickeln die besonders auf sparsame Daten-speichernutzung ausgelegt 
sind, Stichwort sparse matrix 
https://en.wikipedia.org/wiki/Sparse_matrix

von Trump (Gast)


Lesenswert?

Eine Frage, die sich mir aber noch aufdrängt und für die ich noch keine 
Antwort gefunden habe, ist, ob sowas wie das Aufteilen eines großen 
physischen Speichers in mehrere logische Einheiten oder das 
Zusammenfassen mehrerer kleiner physischer Speichermedien zu einer 
großen logischen Einheit auch unter Speichervirtualisierung fällt.

von (prx) A. K. (prx)


Lesenswert?

Trump schrieb:
> Eine Frage, die sich mir aber noch aufdrängt und für die ich noch keine
> Antwort gefunden habe, ist, ob sowas wie das Aufteilen eines großen
> physischen Speichers in mehrere logische Einheiten oder das
> Zusammenfassen mehrerer kleiner physischer Speichermedien zu einer
> großen logischen Einheit auch unter Speichervirtualisierung fällt.

Das zielt wohl eher auf Disk als RAM.

Tut man zunächst nicht, jedenfalls nicht auf der direkten Ebene. Eine 
von vielen Methoden der Aufteilung ist die vom PC her bekannte 
Partitionierung. Andersrum gibt es viele verschiedene Verfahren, die 
beispielsweise mehrere Disks zu einem Storage Pool zusammenfassen, der 
dann wiederum in diverse logische Volumes oder Filesysteme aufgeteilt 
wird.

Es gibt den Begriff aber auch bei vernetzten Speichersystemen, etwa 
VMwares Virtual SAN. Besonders geeignet für Fans von Buzzword Bingo.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.