From Fedora Project Wiki

(Created page with '= KSM = == Summary == Allow KVM guest virtual machines to share identical memory pages. This is especially useful when running multiple guests from the same or similar base ope...')
 
No edit summary
 
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{old}}
= KSM =
= KSM =


== Summary ==
== Sommario ==
Consentire alle [[it_IT/Tools/Virtualization | macchine virtuali KVM guest]], di condividere identiche pagine di memoria. Ciò è particolarmente utile quando multipli guest sono in esecuzione dalla medesima o similare immagine del S.O. base. Poichè la memoria è condivisa, la memoria combinata usata dai guest risulta ridotta.


Allow KVM guest virtual machines to share identical memory pages. This is especially useful when running multiple guests from the same or similar base operating system image. Because memory is shared, the combined memory usage of the guests is reduced.
== Progettista ==


== Owner ==
* Nome: [[User:jforbes|Justin M. Forbes]]
* Email: [mailto:jforbes@redhat.com jforbes@redhat.com]


* Name: [[User:jforbes|Justin M. Forbes]]
== Stato attuale ==
* Email: jforbes@redhat.com
* Rilascio: [[Releases/12| Fedora 12]]
* Per informazioni aggiornate sullo stato di ''KSM'' consultare la [[Features/KSM#Current_status | pagina originale]].


== Current status ==
== Descrizione dettagliata ==
Il concetto di memoria condivisa è molto comune nell'architettura dei S.O. Per esempio, quando si avvia un processo per la prima volta, esso condivide tutta la memoria con il processo genitore. Quando il processo genitore o figlio modificano una parte della memoria, il kernel alloca una nuova regione di memoria, copia i contenuti originali e permette al processo interessato di modificare la nuova regione. Questa operazione è denominata ''copy on write'' (o copia in caso di scrittura).


* Targeted release: [[Releases/12|Fedora 12]]
KSM è una nuova caratteristica di Linux che riprende questo concetto. Esso abilita il kernel a bloccare i due processi (genitore&figlio) in esecuzione per confrontare la loro memoria. Se le zone di memoria sono esattamente identiche, il kernel combina le due regioni in una e le segna per la copy on write.
* Last updated: 2009-08-05
* Percentage of completion: 100%


=== Completed ===
Questa strategia di ottimizzazione si rivela particolarmente utile con KVM. Quando sono avviate macchine virtuali guest, essi possono ereditare soltanto la memoria del processo genitore, <code>qemu-kvm</code>. Inoltre, è il contenuto dell'immagine del S.O. guest che verosimilmente dovrà essere condiviso. KSM, quindi consente a KVM di segnare queste identiche regioni guest come condivise. 


# Multiple versions of the patch posted and discussed on [http://lkml.org LKML].
== Vantaggi per Fedora ==
# Confirmed the kernel patch is queued for 2.6.32 and the <code>madvise()</code> API is stable
Con questa caratteristica Fedora potrà eseguire macchine virtuali guest in uno spazio di memoria potenzialmente molto più efficente. Ciò vorrà dire che le macchine host Fedora saranno capaci di ospitare più guest di prima.
# Backport to 2.6.31
# Include in Fedora kernel builds
# Enable memory sharing in <code>qemu-kvm</code>
 
== Detailed Description ==
 
The concept of shared memory is very common in operating system design. For example, when a program is first started it shares all of its memory with the parent program. When either the child or parent program tries to modify some of this memory the kernel allocates a new memory region, copies the original contents and allows the program to modify this new region. This is known as ''copy on write''.
 
KSM is a new Linux feature which turns this concept on its head. It enables the kernel to look at two already running programs and compare their memory. If any memory regions are exactly identical, the kernel can combine the two regions into one and mark those regions for copy on write as above.
 
This is especially useful in the case of KVM. When guest virtual machines are started, they can only inherit the memory of the parent <code>qemu-kvm</code> process. However, it is the contents of the guest operating system image which has the data which is most likely to be shareable. KSM allows KVM to request that these identical guest memory regions be shared.
 
== Benefit to Fedora ==
 
With this feature Fedora will be able to run guest virtual machines in a potentially much more memory efficient manner. This will mean that Fedora host machines will be capable of hosting more guests than before.
 
== Scope ==
 
The main effort here is the kernel support. Since it is not going to make 2.6.31, we need to consider backporting it once the userspace API has been declared stable. KSM is a pretty well self-contained memory management feature, so backporting should be straightforward.
 
Once the kernel support is available, a minor patch for <code>qemu-kvm</code> is required to enable the memory sharing.
 
An open question is whether KSM will be enabled for all guests by default. If not, support for enabling it will need to be added to libvirt, virtinst, virt-manager etc.
 
== How To Test ==
 
* Ensure you are using <code>kernel >= 2.6.31-0.94.rc4.fc12</code> and <code>qemu-kvm >=0.10.92-4.fc12</code>
* Install two or more virtual machines and run them
* KSM is enabled by default, but limited to 2000 kernel pages.  It is recommended that this be set to a more sane value with the ksm service <code> chkconfig ksm on </code>
* Check whether pages were merged using <code>/sys/kernel/mm/ksm/pages_shared</code>
* Optionally turn on the ksmtuned service which dynamically controls ksm in response to what is happening on the host at any given time with <code> chkconfig ksmtuned on </code>
 
== User Experience ==
 
Users running multiple, but similar, KVM guests should experience a reduction in memory usage when KSM is enabled.
 
Fedora's kvm comes with 2 services controlling the behavior of ksm. One, simply called ksm, is just a nice means to start and stop ksm's kernel thread. The other, called ksmtuned, controls the first service and tunes
its parameters according to the memory stress that is generated by KVM virtual machines. ksmtuned may
stop ksm service alltogether, if memory is not in need. Later, if ksmtuned senses that memory stress has risen, it will fire up ksm again.
 
== Dependencies ==
 
Getting KSM accepted for 2.6.32 and the API declared stable.
 
== Contingency Plan ==
None needed, if KSM is not implemented guests will still work as they do now, without the advantage of a reduced memory footprint.
 
== Documentation ==


== Documentazione ==
* Kernel [http://lkml.org/lkml/2008/11/16/315 patch submission]
* Kernel [http://lkml.org/lkml/2008/11/16/315 patch submission]
* [http://lkml.org/lkml/2009/6/8/330 Agreement] to defer until 2.6.32
* [http://lkml.org/lkml/2009/6/8/330 Agreement] da riferire fino alla 2.6.32
* Current [http://lkml.org/lkml/2009/6/29/221 madvise rollup]
* Current [http://lkml.org/lkml/2009/6/29/221 madvise rollup]
* Posted [http://lkml.org/lkml/2009/7/17/163 KSM rollup]
* Posted [http://lkml.org/lkml/2009/7/17/163 KSM rollup]
* Izik's [http://www.mail-archive.com/kvm@vger.kernel.org/msg19964.html qemu-kvm patch]
* Izik's [http://www.mail-archive.com/kvm@vger.kernel.org/msg19964.html qemu-kvm patch]


== Release Notes ==
== Altre informazioni ==
 
Per:
Fedora 12 adds KSM (Kernel SamePage Merging) which allows identical memory pages to be merged by the kernel into a single page. This is initially used by KVM to allow multiple, but similar, guest virtual machines to have a reduced memory footprint.  To enable KSM, it is recommended that you turn on the ksm service with 'sudo chkconfig ksm on' to set up limits appropriate for your system.  For additional tuning with a large number of guests, the ksmtuned service can be enabled with 'sudo chkconfig ksmtuned on'.
* Obiettivi
 
* Test Plan
== Comments and Discussion ==
* Esperienza Utente
 
* Dipendenze
* See [[Talk:Features/KSM]]
* Progetto corrente
* Note di rilascio
* Commenti e Discussioni
visitare la en-wiki [[Features/KSM| Features: KSM]]


[[Category:Italiano]]
[[Category:F-12 Features IT|{{SUBPAGENAME}}]]
[[Category:Virtualization IT|{{SUBPAGENAME}}]]
[[Category:FeatureAcceptedF12]]
[[Category:Virtualization|KSM]]
[[Category:Virtualization|KSM]]
[[Category:FeatureAcceptedF12]]
[[Category:F12_Virt_Features|KSM]]
[[Category:F12_Virt_Features|KSM]]

Latest revision as of 14:00, 19 January 2016

Old page
This page has been marked as "old", and likely contains content that is irrelevant or incorrect. If you can, please update this page. This page will be deleted if action is not taken.

KSM

Sommario

Consentire alle macchine virtuali KVM guest, di condividere identiche pagine di memoria. Ciò è particolarmente utile quando multipli guest sono in esecuzione dalla medesima o similare immagine del S.O. base. Poichè la memoria è condivisa, la memoria combinata usata dai guest risulta ridotta.

Progettista

Stato attuale

Descrizione dettagliata

Il concetto di memoria condivisa è molto comune nell'architettura dei S.O. Per esempio, quando si avvia un processo per la prima volta, esso condivide tutta la memoria con il processo genitore. Quando il processo genitore o figlio modificano una parte della memoria, il kernel alloca una nuova regione di memoria, copia i contenuti originali e permette al processo interessato di modificare la nuova regione. Questa operazione è denominata copy on write (o copia in caso di scrittura).

KSM è una nuova caratteristica di Linux che riprende questo concetto. Esso abilita il kernel a bloccare i due processi (genitore&figlio) in esecuzione per confrontare la loro memoria. Se le zone di memoria sono esattamente identiche, il kernel combina le due regioni in una e le segna per la copy on write.

Questa strategia di ottimizzazione si rivela particolarmente utile con KVM. Quando sono avviate macchine virtuali guest, essi possono ereditare soltanto la memoria del processo genitore, qemu-kvm. Inoltre, è il contenuto dell'immagine del S.O. guest che verosimilmente dovrà essere condiviso. KSM, quindi consente a KVM di segnare queste identiche regioni guest come condivise.

Vantaggi per Fedora

Con questa caratteristica Fedora potrà eseguire macchine virtuali guest in uno spazio di memoria potenzialmente molto più efficente. Ciò vorrà dire che le macchine host Fedora saranno capaci di ospitare più guest di prima.

Documentazione

Altre informazioni

Per:

  • Obiettivi
  • Test Plan
  • Esperienza Utente
  • Dipendenze
  • Progetto corrente
  • Note di rilascio
  • Commenti e Discussioni

visitare la en-wiki Features: KSM