2012-05-31 20 views
5

VMs 'IO için KVM optimizasyonu üzerinde çalışıyorum. KVM kodlarını okudum, genellikle tüm fiziksel kesintiler VMexit'e neden olacak ve KVM'ye girecek. Ardından, sunucunun IDT'si karşılık gelen fiziksel kesmeyi gerçekleştirir. Sorum şu: KVM, konuklara sanal bir kesinti mi enjekte edip etmeyeceğine karar veriyor mu? ve hangi durumda misafire sanal bir müdahale yapacak?KVM, fiziksel kesmeyi nasıl ele alır?

Teşekkür

cevap

1

Sana (doğrudan misafire fiziksel cihazdan iletilen değildir ve taklit kesintisi veya virt-IO araya girer) atanan cihaz kesmeleri atıfta sanırım. Atanan cihazın her irq'si için request_threaded_irq çağrılır ve her kesintiye çağrılacak kvm_assigned_dev_thread kaydedilir. Gördüğünüz gibi, kvm_set_irq çağrılır ve interrupt maskelenirse gerçekleşen tek birleştirme işlemi anlatılır. X86'da kesintiler, kesintinin sağlanmasına izin vermeyen veya daha yüksek önceliğe sahip hizmette kesintiye neden olmayan TPR nedeniyle rflags.if, mov-SS tarafından maskelenebilir. Konuğu şaşırtmamak için KVM mimarlık tanımını takip etmek zorundadır.

2

kvm Dokümantasyonunda, bu sanal aramanın enjekte edilebileceği hakkında anlatılan şeydir. İşte bağlantı http://os1a.cs.columbia.edu/lxr/source/Documentation/kvm/api.txt
hat numarasından bakış 905. bence yapı kvm_run yapısı VM behave.Use cscope yapar ve kaynak kodunda dize request_interrupt_window aramak nasıl uygulamaya kontrol sağlar
, Anlayacaksın kvm, ne zaman bir interupt.The enjekte etmek için konuk girmek için görmek nasıl görmek api.txt dosya üzerinden gitmek çok yardımcı olur.

Alkış İşte
en EDITED

, konuk içine interupts enjekte konağın bir örnektir.
bu

  • Hipervizör/KVM VMEXIT işleyen bir VMEXIT neden KONUK VM

    • bir sayfa hatası olduğunu varsayalım
    • Onun VMCS kontrol yapısı sayesinde VMEXIT nedenini görür ve orada bulmak sayfa hatası. o sayfa üzerinde çalıştığı sistem çekirdeğinin alloc_page çağırır ve bir yapar ki bu durumda KONUĞUNUZ tahsis edilmemesi nedeniyle sayfa hatası
      • neden oldu olmadığını kontrol böylece
      • konak/KVM, bellek sanallaştırma sorumludur MİSAFİR MÜDAHALE yürütmeyi sürdürmek için.
      • Veya eşleme GUEST OS tarafından kaldırıldı, bu durumda KVM bir iletişim ortamı için bir VMCS denetim yapısını kullanır, bir sanal ara bağlantı no 14 GUEST çekirdek sayfa hata işlemek için neden olur.

    Bu sanal interupt takmadan konağın bir örnektir. Tabii ki bunu yapmak için başka yollar/nedenler var.
    VMCS'yi, misafirin EVERY INSTRUCTION'u çalıştırdıktan sonra bir VMEXIT yapması için yapılandırabilirsiniz. Bu, MONITOR TRAP FLAG kullanılarak yapılabilir.

  • İlgili konular