Der einzige Rat, den ich Ihnen geben kann, ist die sorgfältige Verwendung von mlock()/mlockall() .., während auf der Suche nach Buggy Ballontreibern. Wenn zum Beispiel ein Xen-Gast mit 1 GB gebootet wird und dann auf 512 MB aufgebläht wird, ist es sehr typisch, dass die privilegierte Domäne NICHT darauf schaut, wie viel Speicher der paravirtualisierte Kernel Prozessen (d. H. Committed_AS) tatsächlich verspricht. Eigentlich, mit Xen, hat der privilegierte Host keine Ahnung, was ein solcher Ballon tun wird, wenn er nicht auf Xenbus gesetzt wird. Ich glaube das stimmt auch mit KVM überein, je nachdem wie der Kernel konfiguriert ist .. aber deine Frage geht davon aus, dass wir nichts über solche Dinge wissen :)
Also, schütze Sachen (sei vorsichtig, aber umsichtig) das kann einfach nicht sein ausgelagert, immer für das Szenario "Himmel fällt" verantwortlich.
Auch die Verwendung von posix_fadvise()/posix_madvise(), um dem PV-Kernel zu sagen, wie viel Sie brauchen oder nicht gepuffert werden müssen, ist immer eine gute Idee.
Darüber hinaus gibt es sehr wenig, was Sie tun können, da Sie nur mit dem paravirtualisierten Kernel sprechen, der dafür sorgt, dass Prozesse von der Virtualisierung gar nicht erst erfasst werden.
Ich benutze KVM nicht viel (noch), obwohl ich plane, es in der Zukunft mehr zu erforschen. Allerdings sind 90% der Sachen, die ich in letzter Zeit geschrieben habe, speziell für paravirtualisierte Xen-Gäste gedacht. Leider ein wenig Xen/C centric sein, aber das ist, wo meine Erfahrung ist, und pv_ops ist in Hauptstrecke (bald auch xen-0 ops) :)
Gute Frage, :) btw
Edit:
Als ich "vorsichtig, aber vorsichtig" sagte, meinte ich einen Schritt über konservativ. Wenn Ihr Programm eine Jobstruktur zuweist, die die meisten Funktionen benötigen, sperren Sie sie. Wenn du Puffer allozieren willst, um große Dateien zu lesen, sperre sie nicht. Und sei sicher, posix_fadvise() aufzurufen, damit der Kernel weiß, dass du nur einmal darauf zugreifen willst (wenn das der Fall ist). Informieren Sie den Kernel auch über die Verwendung von Speicherabbilddateien, insbesondere, wenn sie der Organisation von Parallelität dienen.
Kurz gesagt, helfen Ihrem Host-Kernel verwalten Speicher, lassen Sie sich nicht kritisch zugeordnete Blöcke in schmutzige Paging geworfen bekommen, nicht davon ausgehen, Ihr Programm ist wichtiger als alles andere, indem sie alles Verriegelungs es ordnet :)
Entschuldigung für die Mehrdeutigkeit. Der beste Satz, den ich mir vorstellen konnte, war "vorsichtig, aber vorsichtig".
+1, aber, "(sei vorsichtig, aber umsichtig)"? Was meinen Sie? das sind praktisch auch ... –
Bearbeitet um zu erklären :) –
+ 1.Zusatz: "Zum jetzigen Zeitpunkt (2.6.21) erinnert sich Linux nicht mehr POSIX_FADV_DONTNEED Ratschlag für eine offene Datei. Sie agiert, wenn der Rat gegeben wird, und wenn sie nicht nachkommen kann, vergisst sie den Rat. Es liegt also an Ihnen, dafür zu sorgen, dass Linux den Anforderungen entspricht. " –
VolkerK