Karl Heinz: Warum ist Linux soviel schneller wie M$ Windows?

Hallo,

basierend auf einem Linux Mint System nutze ich eine VirtualBox mit Windows 7.

Das Arbeiten mit Windows 7 in der VirtualBox ist ziemlich frustrierend, weil das System einfach furchtbar träge ist. In Gedanken bin ich schon drei Klicks weiter, muss aber immer warten bis das System endlich geladen hat.

Einfach mal ein Beispiel:

  • Browser Start in Linux maximal 2 Sekunden
  • Browser Start im Virtual Box Windows 7 teilsweise 5 Sekunden oder mehr (gefühlt wie eine halbe Ewigkeit)

Meine Effizienz nimmt durch das Träge Windows System natürlich enorm ab. Außerdem nervt es ziemlich.

Deshalb möchte ich die Ursache finden und beheben.

Ich sehe folgende mögliche Ursachen:

  • VirtualBox Systeme sind grundsätzlich langsamer als direkt installierte Systeme, man muss einfach akzeptieren, dass Virtual Box-Systeme langsamer sind. Liege ich da richtig?
  • Ich habe der VirtualBox zuwenig CPU Kerne und/oder zuwenig RAM zugeordnet. Kann aber eigentlich nicht sein, da ich der Virtual Box ordentlich Ressourcen zugeordnet habe. Zum einen 4 GB von den 32 GB RAM zum anderen 4 der 8 CPU Kerne. Auch die CPU und RAM Auslastung in der VirtualBox deutet nicht auf zu geringe Ressourcen hin. CPU Auslastung und RAM Auslastung liegen beim Start von Programmen z.B. des Browsers immer deutlich unter der Maximalauslastung (meistens unter 50%). Trotzdem dauert der Start des Browsers in der VirtualBox viel länger als in Linux.
  • Möglich laufende Hintergrundgrozesse die Ressourcen verschlingen gibt es keine z.B. Viren-Scanner Update oder Windows Update.

Könnt Ihr mir sagen aus welchem Grund die VirtualBox mit Windows 7 trotzdem so viel langsamer als das Linux System ist?

Macht es Sinn die kompletten 32 GB RAM und alle 8 CPU Kerne an die VirtualBox zu vergeben? Wenn ich mit der VirtualBox arbeite brauche ich die Resourcen auf Linux ja sowieso nicht.

akzeptierte Antworten

  1. Hallo

    • VirtualBox Systeme sind grundsätzlich langsamer als direkt installierte Systeme, man muss einfach akzeptieren, dass Virtual Box-Systeme langsamer sind. Liege ich da richtig?

    Falsch.

    Richtig ist: Virtualisierte Systeme sind grundsätzlich langsamer als direkt auf einer Hardware installierte Systeme. Dabei ist es irrelevant, ob es VMWare oder VirtualBox oder sonstwas ist. Du hast auch, soweit man das deinem Text entnehmen kann, der VM genug Hardware zugewiesen (4GB RAM, 4 Kerne). Alles, was in der VM geschieht, muss halt berechnet werden, sprich, es gibt eine zusätzliche Übersetzungsschicht zwischen den laufenden Programmen und der Hardware und Übersetung braucht (Lauf-)Zeit.

    Könnt Ihr mir sagen aus welchem Grund die VirtualBox mit Windows 7 trotzdem so viel langsamer als das Linux System ist?

    Das eine läuft auf der Hardware, das andere in einer Virtualisierung, die ihrerseits auf der Hardware läuft. Bau dir doch mal ein Linux in einer VM und vergleiche dessen Performanz mit der des Hostsystems.

    Macht es Sinn die kompletten 32 GB RAM und alle 8 CPU Kerne an die VirtualBox zu vergeben? Wenn ich mit der VirtualBox arbeite brauche ich die Resourcen auf Linux ja sowieso nicht.

    Mit welcher Hardware läuft dann dein Betriebssystem und die Virtualisierungssoftware?

    Tschö, Auge

    --
    Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
    Wolfgang Schneidewind *prust*
    1. Hallo Auge,

      Falsch.

      Ja, aber dein Kommentar auch ;-)

      Richtig ist: Virtualisierte Systeme sind grundsätzlich langsamer als direkt auf einer Hardware installierte Systeme.

      Das kann man so nicht behaupten.

      Ein Computer mit zwei Betriebssystemen muss zwangsläufig langsamer sein als ein Computer mit nur einem OS, aber nicht prinzipiell ist die Virtualisierung langsamer.

      Dabei ist es irrelevant, ob es VMWare oder VirtualBox oder sonstwas ist. Du hast auch, soweit man das deinem Text entnehmen kann, der VM genug Hardware zugewiesen (4GB RAM, 4 Kerne). Alles, was in der VM geschieht, muss halt berechnet werden, sprich, es gibt eine zusätzliche Übersetzungsschicht zwischen den laufenden Programmen und der Hardware und Übersetung braucht (Lauf-)Zeit.

      Moderne Virtualisierung hat keine „Übersetzungsschicht” in dem Sinne mehr. Der Code läuft direkt auf der CPU und der Zugriff auf die Ressourcen ist auch direkt. Dafür wurden die Virtualisierungs-Erweiterungen in aktuelleren CPUs eingebaut (z.B. Intel VT).

      LG,
      CK

      1. Tach!

        Moderne Virtualisierung hat keine „Übersetzungsschicht” in dem Sinne mehr. Der Code läuft direkt auf der CPU und der Zugriff auf die Ressourcen ist auch direkt. Dafür wurden die Virtualisierungs-Erweiterungen in aktuelleren CPUs eingebaut (z.B. Intel VT).

        Ja, aber alle Hardware kann und darf die VM auch nicht direkt ansprechen. Beispielsweise soll die Grafik nur in einem Fenster des Host-Systems ausgegeben werden, und dazu braucht es meines Wissens dann doch eine Emulation oder einen speziellen Treiber. VMWare beispielsweise bringt mit den VMWare-Tools Treiber für die Betriebssysteme mit, damit es da einen optimierten Datenaustausch gibt. Vielleicht bremst ja die Grafik im vorliegenden Fall.

        dedlfix.

        1. Hallo dedlfix,

          Moderne Virtualisierung hat keine „Übersetzungsschicht” in dem Sinne mehr. Der Code läuft direkt auf der CPU und der Zugriff auf die Ressourcen ist auch direkt. Dafür wurden die Virtualisierungs-Erweiterungen in aktuelleren CPUs eingebaut (z.B. Intel VT).

          Ja, aber alle Hardware kann und darf die VM auch nicht direkt ansprechen.

          Das hängt davon ab, was du als „direkt” bezeichnest. Du darfst nicht nach belieben im DMA der Hardware rumschreiben, das stimmt. Wobei das auch nicht für jede Hardware gilt, block storage devices z.B. werden 1:1 an der Kernel weiter gereicht.

          Beispielsweise soll die Grafik nur in einem Fenster des Host-Systems ausgegeben werden, und dazu braucht es meines Wissens dann doch eine Emulation oder einen speziellen Treiber.

          Dazu gibt es Treiber für das Guest-System, emuliert wird auch da nicht mehr.

          VMWare beispielsweise bringt mit den VMWare-Tools Treiber für die Betriebssysteme mit, damit es da einen optimierten Datenaustausch gibt. Vielleicht bremst ja die Grafik im vorliegenden Fall.

          Möglich. Ohne die Guest Additions ist das natürlich alles hinfällig, die sollte man in jedem Fall installieren.

          LG,
          CK

          1. Möglich. Ohne die Guest Additions ist das natürlich alles hinfällig, die sollte man in jedem Fall installieren.

            Die "Gast-Erweiterungen" habe ich installiert.

        2. Vielleicht bremst ja die Grafik im vorliegenden Fall.

          Wie kann ich herausfinden, ob die Grafik die Bremse ist bzw. wie kann ich diese Bremse lösen?

          1. Tach!

            Vielleicht bremst ja die Grafik im vorliegenden Fall.

            Wie kann ich herausfinden, ob die Grafik die Bremse ist bzw. wie kann ich diese Bremse lösen?

            Schauen, ob die systemspezifischen Treiber installiert sind, also die Treiber, die die VM-Software für die Gastsysteme mitbringt. Mehr kann man da nicht tun.

            dedlfix.

            1. Schauen, ob die systemspezifischen Treiber installiert sind, also die Treiber, die die VM-Software für die Gastsysteme mitbringt. Mehr kann man da nicht tun.

              Du meinst die Gast-Erweiterungen oder? Die sind installiert.

      2. Hallo

        Moderne Virtualisierung hat keine „Übersetzungsschicht” in dem Sinne mehr. Der Code läuft direkt auf der CPU und der Zugriff auf die Ressourcen ist auch direkt. Dafür wurden die Virtualisierungs-Erweiterungen in aktuelleren CPUs eingebaut (z.B. Intel VT).

        Da es heute diverse Konzepte von Virtualisierung gibt, frage ich, was zählst du zu „moderner Virtualisierung“? VirtualBox oder VMWare gehören für dich dazu? Das Konzept von VMs ist mMn nicht mehr das Neueste. Wenn doch alles™ direkt auf der Hardware läuft, warum brauche ich für VirtualBox-VMs dann noch Treiber für die Grafik (wie @dedlfix schon anmerkte) und warum laufen unterschiedliche Betriebssysteme virtualisiert so sehr unterschiedlich schnell?

        Tschö, Auge

        --
        Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
        Wolfgang Schneidewind *prust*
        1. Hallo Auge,

          Moderne Virtualisierung hat keine „Übersetzungsschicht” in dem Sinne mehr. Der Code läuft direkt auf der CPU und der Zugriff auf die Ressourcen ist auch direkt. Dafür wurden die Virtualisierungs-Erweiterungen in aktuelleren CPUs eingebaut (z.B. Intel VT).

          Da es heute diverse Konzepte von Virtualisierung gibt, frage ich, was zählst du zu „moderner Virtualisierung“? VirtualBox oder VMWare gehören für dich dazu?

          Ich sprach nicht von der Applikation, sondern wie Virtualisierung heutzutage gemacht wird, und da unterscheiden sich VirtualBox, VMWare und co nicht besonders.

          Das Konzept von VMs ist mMn nicht mehr das Neueste.

          Nein, deshalb ist die Performance in VMs ja auch so gut ;-)

          Wenn doch alles™ direkt auf der Hardware läuft, warum brauche ich für VirtualBox-VMs dann noch Treiber für die Grafik (wie @dedlfix schon anmerkte)

          Damit die Virtualisierung wegfallen kann! ;-)

          und warum laufen unterschiedliche Betriebssysteme virtualisiert so sehr unterschiedlich schnell?

          Tun sie eigentlich nicht. Benchmarks zeigen, dass die Performance physikalisch vs virtualisiert vergleichbar ist.

          Wichtig ist natürlich zu beachten, dass man nicht einfach eine VM starten kann und dann erwarten kann, dass alles schnell ist. Die guest additions müssen installiert sein, das guest os muss ausreichend Ressourcen zur Verfügung haben und das Host-System darf nicht ausgelastet sein. Läuft ja beides auf der gleichen physikalischen Maschine, das heisst, die Ressourcen werden geteilt.

          LG,
          CK

          1. Hallo

            Moderne Virtualisierung hat keine „Übersetzungsschicht” in dem Sinne mehr. Der Code läuft direkt auf der CPU und der Zugriff auf die Ressourcen ist auch direkt. Dafür wurden die Virtualisierungs-Erweiterungen in aktuelleren CPUs eingebaut (z.B. Intel VT).

            Da es heute diverse Konzepte von Virtualisierung gibt, frage ich, was zählst du zu „moderner Virtualisierung“? VirtualBox oder VMWare gehören für dich dazu?

            Ich sprach nicht von der Applikation …

            Ich auch nicht. :-)

            … sondern wie Virtualisierung heutzutage gemacht wird, und da unterscheiden sich VirtualBox, VMWare und co nicht besonders.

            VirtualBox, VMWare und co gehören für mich zu einem (mittlerweile alten) Konzept. Xen, Docker und Co sind für mich die anderen und im Falle Docker neueren Konzepte, deren Existenz mir bekannt ist, über deren Unterschiede und Vorteile ich mich aber aus Mangel an Notwendigkeit bisher nicht informiert habe.

            und warum laufen unterschiedliche Betriebssysteme virtualisiert so sehr unterschiedlich schnell?

            Tun sie eigentlich nicht. Benchmarks zeigen, dass die Performance physikalisch vs virtualisiert vergleichbar ist.

            Hmm. Das Windows 2000, das ich in VirtualBox gelegentlich zum Betrieb eines unter Linux nicht laufenden Scanners und ein paar bestimmter Programme anwerfe, läuft für mich problemlos. Die Hardwareanforderungen sind ja nun auch nicht herausragend und es gibt dafür Guestadditions, Treiber und allen Pipapo. Die eine oder andere ausprobierte Linux-Distribution, ebenfalls mit Guestadditions ausgestattet und mit entsprechend zugewiesenem Mehr an Hardware, kam aber recht zäh daher. Ich habe solche Unterschiede beobachtet. Sie sind tatsächlich da.

            Mein Versuch, Windows 98, für das es keine Guestadditions und Treiber gibt, unter VirtualBox zum Laufen zu bewegen, was zu der Glanzperformance von 0.x Frames/s führte, zählen natürlich nicht. Sowas sorgt nur für lange Gesichter.

            Wichtig ist natürlich zu beachten, dass man nicht einfach eine VM starten kann und dann erwarten kann, dass alles schnell ist. Die guest additions müssen installiert sein, das guest os muss ausreichend Ressourcen zur Verfügung haben und das Host-System darf nicht ausgelastet sein. Läuft ja beides auf der gleichen physikalischen Maschine, das heisst, die Ressourcen werden geteilt.

            Das halte ich auf meiner Maschine für gegeben.

            Ist ja auch wurscht. @Karl Heinz ist jetzt mal mit einer echten Bestandsaufnahme seines Systems dran. Stichworte sind hier mittlerweile genug gefallen.

            Tschö, Auge

            --
            Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
            Wolfgang Schneidewind *prust*
            1. Hallo Auge,

              … sondern wie Virtualisierung heutzutage gemacht wird, und da unterscheiden sich VirtualBox, VMWare und co nicht besonders.

              VirtualBox, VMWare und co gehören für mich zu einem (mittlerweile alten) Konzept. Xen, Docker und Co sind für mich die anderen und im Falle Docker neueren Konzepte, deren Existenz mir bekannt ist, über deren Unterschiede und Vorteile ich mich aber aus Mangel an Notwendigkeit bisher nicht informiert habe.

              Nee, da wirfst du was durcheinander. Xen fällt in die gleiche Sparte wie VirtualBox und VMWare, das sind echte[tm] Virtualisierungslösungen. Docker ist keine Virtualisierung, da läuft die Software nur in einem Container (LXC, LinuX Container).

              LG,
              CK

              1. Hallo

                … Docker ist keine Virtualisierung, da läuft die Software nur in einem Container (LXC, LinuX Container).

                aus Wikipedia zu LXC:

                „LXC (Linux Containers) ist ein Verfahren zur Virtualisierung auf Betriebssystemebene, das mehrere voneinander isoliert laufende Linux-Systeme auf einem einzigen Host ermöglicht.“

                aus Wikipedia zu Docker:

                „Docker ist eine Open-Source-Software, die dazu verwendet werden kann, Anwendungen mithilfe von Betriebssystemvirtualisierung in Containern zu isolieren.“

                Hervorhebungen jeweils von mir.

                Wie gesagt, ich habe keinerlei eigene Erfahrungen mit den Systemen, muss mich also auf Aussagen anderer verlassen. Aber auch hier scheint mir Virtualisierung im Spiel zu sein, wenn auch nicht als Hauptpunkt. Ja, Docker ist selbst keine Virtualisierung sondern eine eigenrichtetes System, das vorhandene Virtualisierungen für seinen Betrieb nutzt. Schlussendlich wird aber virtualisiert [1]. Wie das funktioniert und wie anders oder gleich das im Vergleich zu klassischen VMs funktioniert, weiß ich halt nicht.

                Tschö, Auge

                --
                Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
                Wolfgang Schneidewind *prust*

                1. Hat hier überhaupt schon wer „Bingo!“ gerufen? ↩︎

                1. Hallo Auge,

                  … Docker ist keine Virtualisierung, da läuft die Software nur in einem Container (LXC, LinuX Container).

                  aus Wikipedia zu LXC: […]

                  Nun gut, ich gebe mich geschlagen. Ich hätte es nicht als Virtualisierung bezeichnet, weil ich darunter technisch tatsächlich etwas anderes verstanden habe. Aber die Begründung/Herleitung finde ich schlüssig.

                  LG,
                  CK

                  1. Hallo

                    … Docker ist keine Virtualisierung, da läuft die Software nur in einem Container (LXC, LinuX Container).

                    aus Wikipedia zu LXC: […]

                    … Ich hätte es nicht als Virtualisierung bezeichnet, weil ich darunter technisch tatsächlich etwas anderes verstanden habe.

                    Da sind wir an dem Punkt, an dem ich nicht auf Kenntnisse aus eigener Praxis zurückgreifen kann. Deshalb fragte ich ja nach den verschiedenen „Arten“ von Virtualisierung. Speziell nach der Einordnung von VMWare und V-Box in dieses System, aber auch allgemeiner nach eventuell vorhandenen, konzeptionell bedingten Performanceunterschieden.

                    Tschö, Auge

                    --
                    Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
                    Wolfgang Schneidewind *prust*
                    1. Hallo

                      … Docker ist keine Virtualisierung, da läuft die Software nur in einem Container (LXC, LinuX Container).

                      aus Wikipedia zu LXC: […]

                      … Ich hätte es nicht als Virtualisierung bezeichnet, weil ich darunter technisch tatsächlich etwas anderes verstanden habe.

                      Das unterscheidet sich auch wesentlich. VMware, Xen, VirtualBox & Co tun "emulieren", stellen dem Gast die sozusagen "Hardware" (teil sogar reale Hardware) zu Verfügung, die Gäste haben einen eigenen Kernel.

                      Bei LXC, Docker (Docker ist eigentlich nur eine Verwaltung für LX) und Co. ist der Kernel der ohnehin laufende Kernel, aber der "Gast" läuft in einer völlig eigenen "Umgebung", die durchaus in einigen (aber längst nicht allen!) Punkten mit einer chroot-Umgebung vergleichbar ist. Also hat der Gast z.B. eigene oder virtuelle Verzeichnisse für /etc, /bin, /usr, /var, ... - und darf (soll) von der Existenz der anderen, realen, nicht mal was erfahren. Sollte jetzt mal der Kernel und dann auch ein Programm (nehmen wir sort oder sed derart im Popo sein, dass eine Rechteausweitung möglich ist und dann der im Container laufende Webserver via Joomla oder Wordpress gehackt werden, aber in seinem /usr/bin/ gar kein sort oder sed haben, genau dann ist das Problem (scheinbar) kleiner. Für die Auswirkung kann man das jedenfalls bejahen.

                      Buzzwortwarnung: Zur Zeit finden viele LXC, Docker & Co. ganz toll und manche verwenden es teilweise ohne Sinn und Verstand - weil man dann schlau drüber reden kann.

          2. Wichtig ist natürlich zu beachten, dass man nicht einfach eine VM starten kann und dann erwarten kann, dass alles schnell ist. Die guest additions müssen installiert sein, das guest os muss ausreichend Ressourcen zur Verfügung haben und das Host-System darf nicht ausgelastet sein. Läuft ja beides auf der gleichen physikalischen Maschine, das heisst, die Ressourcen werden geteilt.

            Angenommen ich gebe der VirtualBox den kompletten RAM (32 GB) und alle Kerne der CPU (8).

            Weitere Annahme: Sowohl Host als auch Gast sind am Leistungslimit.

            Werden dann RAM und CPU Kerne gleichverteilt für beide Systeme aufgeteilt?

            Was ist wenn der Host keine Last hat, bekommt dann der Gast alles sprich 32 GB RAM und 8 Kerne.

            Falls ja, wäre es doch eigentlich die beste Lösung dem Gast grundsätzlich das komplette RAM und alle CPU Kerne zuzuordnen oder liege ich da falsch?

            1. Hallo,

              Angenommen ich gebe der VirtualBox den kompletten RAM (32 GB) und alle Kerne der CPU (8).

              das kannst du nicht, VirtualBox wird dich daran hindern. Und wenn du es könntest, würde dein Host-OS mangels RAM nicht mehr funktionieren.

              Weitere Annahme: Sowohl Host als auch Gast sind am Leistungslimit.

              Werden dann RAM und CPU Kerne gleichverteilt für beide Systeme aufgeteilt?

              Was ist wenn der Host keine Last hat, bekommt dann der Gast alles sprich 32 GB RAM und 8 Kerne.

              Das hatten wir doch schon mal.

              Der Arbeitsspeicher wird der VM fest zugeteilt. Stellst du also 8GB ein, dann "fehlen" diese 8GB deinem Hostsystem, auch wenn das Gastsystem in der VM gar nicht so viel RAM braucht.

              Die CPU-Leistung wird dagegen dynamisch, also nach Bedarf verteilt. Ja, du kannst alle Kerne der VM zuteilen, dann kann das Gastsystem (von einem kleinen Overhead abgesehen) die volle CPU-Leistung nutzen. Brauchen beide (Host und Gast) viel Rechenleistung, dann wird aufgeteilt, ähnlich wie bei konkurrierenden Anwendungen unter einem OS.
              Und wenn du dem Gastsystem nur 4 von 8 Kernen zuordnest, heißt das nur, dass die VM bei Bedarf bis zu 4 CPU-Kerne nutzen kann. Und es heißt, dass in jedem Fall immer noch mindestens 4 Kerne dem Hostsystem zur Verfügung stehen, auch wenn das Gastsystem unter voller Last keucht.

              Falls ja, wäre es doch eigentlich die beste Lösung dem Gast grundsätzlich das komplette RAM und alle CPU Kerne zuzuordnen

              RAM nein, CPU-Kerne ja.

              So long,
               Martin

              --
              Es gibt eine Theorie, die besagt, dass das Universum augenblicklich durch etwas noch Komplizierteres und Verrücktes ersetzt wird, sobald jemand herausfindet, wie es wirklich funktioniert. Es gibt eine weitere Theorie, derzufolge das bereits geschehen ist.
              - (frei übersetzt nach Douglas Adams)
              1. Das hatten wir doch schon mal.

                Stimmt, da war aber die CPU Last hoch und der RAM ausgeschöpft, wußte nur nicht warum.

                Es war das Windows Update im Hintergrund.

                Diesmal ist kaum CPU Last da, außerdem wird der RAM kaum beansprucht, ein Update läuft auch nicht im Hintergrund, das System ist trotzdem träge.

                Die CPU-Leistung wird dagegen dynamisch, also nach Bedarf verteilt. Ja, du kannst alle Kerne der VM zuteilen, dann kann das Gastsystem (von einem kleinen Overhead abgesehen) die volle CPU-Leistung nutzen. Brauchen beide (Host und Gast) viel Rechenleistung, dann wird aufgeteilt, ähnlich wie bei konkurrierenden Anwendungen unter einem OS.

                Warum kann man diese dynamische Aufteilung nicht auch mit dem RAM realisieren, das wäre doch viel klüger?

                1. Hi,

                  Die CPU-Leistung wird dagegen dynamisch, also nach Bedarf verteilt. Ja, du kannst alle Kerne der VM zuteilen, dann kann das Gastsystem (von einem kleinen Overhead abgesehen) die volle CPU-Leistung nutzen. Brauchen beide (Host und Gast) viel Rechenleistung, dann wird aufgeteilt, ähnlich wie bei konkurrierenden Anwendungen unter einem OS.

                  Warum kann man diese dynamische Aufteilung nicht auch mit dem RAM realisieren, das wäre doch viel klüger?

                  das wäre schon elegant, aber dann müsste das Gastsystem "wissen", dass es in einer VM läuft und den momentan nicht benötigten Speicher abtreten soll. Mit anderen Worten: Die Speicherverwaltung des Gastsystems müsste anders funktionieren, als wenn es auf einer eigenen physischen Maschine läuft, wo eine bestimmte Menge RAM "einfach da ist".

                  Aber genau das möchte man ja nicht. Das Gastsystem soll die perfekte Illusion haben, es liefe exklusiv auf einer Maschine, und das Hostsystem soll so wenig Einfluss wie möglich auf das Gastsystem haben, sondern ihm nur die (virtuelle) Hardware zur Verfügung stellen.

                  Bei der CPU geht diese dynamische Zuteilung, weil der Mechanismus im Scheduler heutiger Multitasking-Systeme sowieso enthalten ist: Wenn gerade kein Prozess nach Rechenleistung schreit, versetzen sie sogar die CPU für Sekundenbruchteile in einen HALT-Zustand, bis wieder Bedarf da ist. Das wird übrigens mit dem Pseudo-Prozess Idle (oder Leerlaufprozess) repräsentiert.

                  Was das für einen Einfluss hat, sieht man sehr deutlich, wenn man mal ein Uralt-System in einer VM laufen lässt, das kein Multitasking unterstützt und auch kein CPU-Halt. Zum Beispiel ein gutes altes MS DOS. Dann wird man feststellen, dass es erstens nur einen CPU-Kern tatsächlich nutzt (es kennt nichts anderes), und dieser Kern die ganze Zeit 100% ausgelastet ist, weil DOS bei Untätigkeit "aktiv wartet", also in einer unproduktiven Warteschleife hängt.

                  So long,
                   Martin

                  --
                  Es gibt eine Theorie, die besagt, dass das Universum augenblicklich durch etwas noch Komplizierteres und Verrücktes ersetzt wird, sobald jemand herausfindet, wie es wirklich funktioniert. Es gibt eine weitere Theorie, derzufolge das bereits geschehen ist.
                  - (frei übersetzt nach Douglas Adams)
                  1. Tach!

                    das wäre schon elegant, aber dann müsste das Gastsystem "wissen", dass es in einer VM läuft und den momentan nicht benötigten Speicher abtreten soll. Mit anderen Worten: Die Speicherverwaltung des Gastsystems müsste anders funktionieren, als wenn es auf einer eigenen physischen Maschine läuft, wo eine bestimmte Menge RAM "einfach da ist".

                    Aber genau das möchte man ja nicht.

                    Aber genau das können diverse Windows-Versionen, wenn sie in einer Hyper-V-Umgebung laufen. Da können die VMs Speicher dynamisch anfordern und wieder freigeben. Ob das was standardisiertes oder was Windows-only ist, weiß ich aber nicht.

                    dedlfix.

                    1. Hallo,

                      das wäre schon elegant, aber dann müsste das Gastsystem "wissen", dass es in einer VM läuft und den momentan nicht benötigten Speicher abtreten soll. Mit anderen Worten: Die Speicherverwaltung des Gastsystems müsste anders funktionieren, als wenn es auf einer eigenen physischen Maschine läuft, wo eine bestimmte Menge RAM "einfach da ist".

                      Aber genau das möchte man ja nicht.

                      Aber genau das können diverse Windows-Versionen, wenn sie in einer Hyper-V-Umgebung laufen.

                      habe ich noch nie gehört, klingt aber interessant.

                      Da können die VMs Speicher dynamisch anfordern und wieder freigeben.

                      Aber dann muss das OS (sowohl Host als auch Gast) diesen Mechanismus explizit unterstützen, wie du ja mit der Formulierung diverse Windows-Versionen andeutest.

                      Ob das was standardisiertes oder was Windows-only ist, weiß ich aber nicht.

                      Vermutlich proprietär.

                      Ciao,
                       Martin

                      --
                      Es gibt eine Theorie, die besagt, dass das Universum augenblicklich durch etwas noch Komplizierteres und Verrücktes ersetzt wird, sobald jemand herausfindet, wie es wirklich funktioniert. Es gibt eine weitere Theorie, derzufolge das bereits geschehen ist.
                      - (frei übersetzt nach Douglas Adams)
              2. Falls ja, wäre es doch eigentlich die beste Lösung dem Gast grundsätzlich das komplette RAM und alle CPU Kerne zuzuordnen

                RAM nein, CPU-Kerne ja.

                Äh. Für den konkreten Fall (Windows-Desktop) mag das zutreffen (eventuell muss das Windows wegen der "anderen Hardware" neu freigeschaltet werden!), aber es gibt da Ausnahmen:

                Manche Programme oder OS sind per CPU lizenziert. Wenn man also eine Lizenz für nur eine CPU hat, dann kann der Betrieb auf mehreren CPU einen Rechtsverstoß darstellen (ganz garstige Programme "rufen dann sogar zu Hause an") und richtig verdongelte Software mag dann (zusätzlich) nicht mal (über die "HomeTel-Funktion" hinaus) starten.

    2. Mit welcher Hardware läuft dann dein Betriebssystem und die Virtualisierungssoftware?

      • 32 GB RAM
      • AMD 8 Kern CPU
      • 128 GB SSD (da liegt Linux)
      • 1 TB normale Platte (als Datengrab und für die VirtualBox mit Windows 7) - mmm die SSD mit Linux ist natürlich auch schneller, macht das soviel aus?
      • billige Grafikarte
      1. die SSD mit Linux ist natürlich auch schneller, macht das soviel aus?

        Aber ja doch! Gerade beim Browserstart und zusätzlich zu dem hier.

      2. Hallo

        Mit welcher Hardware läuft dann dein Betriebssystem und die Virtualisierungssoftware?

        • 32 GB RAM
        • AMD 8 Kern CPU
        • 128 GB SSD (da liegt Linux)
        • 1 TB normale Platte (als Datengrab und für die VirtualBox mit Windows 7) - mmm die SSD mit Linux ist natürlich auch schneller, macht das soviel aus?
        • billige Grafikarte

        Nur, um das nochmal klarzustellen. Meine Frage bezog sich explizit auf deine davor stehende Idee, der VM alle Hardware zur Verfügung zu stellen und sie so dem eigenen Betriebssystem und der Virtualisierungssoftware zu entziehen. Deswegen auch „dann“ und nicht „denn“.

        Der ganze Schmonz nochmal im Kontext:

        Macht es Sinn die kompletten 32 GB RAM und alle 8 CPU Kerne an die VirtualBox zu vergeben? Wenn ich mit der VirtualBox arbeite brauche ich die Resourcen auf Linux ja sowieso nicht.

        Mit welcher Hardware läuft dann dein Betriebssystem und die Virtualisierungssoftware?

        Die Frage hat ja schon Der Martin im weiteren Verlauf des Threads mit dir besprochen [1]. Daher bedarf es hier keinen weiteren Ausführungen. Ich wollt's nur klarstellen.

        Tschö, Auge

        --
        Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
        Wolfgang Schneidewind *prust*

        1. in jenem Posting und den folgenden ↩︎

  2. Naja. Du willst einen Browser starten. Dazu müssen sehr viele Dat(ei)en vom Dateisystem gelesen werden.

    Und das geht dann so:

    1. Windows greift auf Dateisystem (NTFS) zu.
    2. diese Zugriffe erfolgen aber auf einer virtuellen Disk - die virtuelle Disk wird von VirtualBox verwaltet;
    3. VirtualBox sagt jetzt Deinem OS (Linux), was es auf der Platte zu tun hat.
    4. Linux greift auf echtes Dateisystem zu.

    Wenn nicht virtualisiert wird, das System also "auf dem Blech läuft", entfallen die Schritte 2 bis 4. Und da diese Zeit kosten starten die Programme innerhalb von Windows innerhalb der virtuellen Maschine langsamer. Auch andere, "plattenintensive" Vorgänge erfordern mehr Zeit.

    Berechnungen etc. dürfte Dein virtualisiertes Windows aber (fast) so schnell durchführen wie wenn es auf der konfigurierten Maschine (->Prozessoren, ->Speicher) laufen würde.

    Du hast schon mal den eingebauten Leistungstest probiert?