2016-12-04 5 views
10

Ich verwende derzeit eine Simics module (siehe Kapitel 6), um Befehlsabruf und Datenzugriff zu überwachen und Callbacks für alle diese Ereignisse auszuführen, um einen laufenden Kernel zu instrumentieren Simics X 86. Zum Beispiel kann ich ein Simics Modul wie folgt erstellen:Generieren von Funktionsaufrufen für Datenzugriffe in VMware ESXi

/* Initialize our Simics module. */ 
void init_local(void) 
{ 
    const class_data_t funcs = { 
     .new_instance = ls_new_instance, 
     .class_desc = "desc", 
     .description = "A simics module." 
    }; 

    /* Register the empty device class. */ 
    conf_class_t *conf_class = SIM_register_class(SIM_MODULE_NAME, &funcs); 

    /* Register our class class as a trace consumer. */ 
    static const trace_consume_interface_t trace_int = { 
     .consume = (void (*)(conf_object_t *, trace_entry_t *))my_tool_entrypoint 
    }; 
    SIM_register_interface(conf_class, TRACE_CONSUME_INTERFACE, &trace_int); 
} 

Auf diese Weise wird Simics my_tool_entrypoint auf jede Anweisung rufen und jeden Datenzugriff; Erlaubt mir, den Kernel zu instrumentieren, den ich laufe, wie ich es für richtig halte. Unnötig zu sagen, dass dies eine sehr coole und sehr mächtige Funktion ist.

Meine Fragen sind:

  1. Ist eine solche Funktion für Programme auf einem VMware ESXi ausgeführt wird (oder VMware Workstation) Hypervisor? Wenn ja, wo ist die Dokumentation für dieses Feature?
  2. Wenn es auf ESXi nicht verfügbar ist, ist es auf anderen Hypervisoren wie Xen verfügbar?

Bitte beachte, dass ich NICHT gefragt bin, wie Simics unter laufen/über VMware, Xen, Bochs, usw. Ich frage, ob es möglich/wie einen Rückruf laufen auf Befehl holt und Speicherzugriffe (wie Ich zeigte, war mit Simics möglich) auf einer anderen Plattform wie VMware, Xen, Bochs, Qemu, etc.

Antwort

1

Es klingt wie Sie "vProbes" verwenden möchten. Mit vProbes können Sie alle Anweisungen oder Datenzugriffe in einem Gastbetriebssystem und anschließend Callback-Skripts dynamisch instrumentieren. (nicht sicher, ob Sie von "Dtrace" für Solaris gehört haben, aber es ist ähnlich) Ich habe es zum Beispiel verwendet, um Funktionsaufrufe innerhalb des Linux-Schedulers zu verfolgen. Die Skripte müssen in einer C-ähnlichen Sprache namens Emmett geschrieben werden. Dieser Artikel ist ein gutes Buch über die Technologie und was ist möglich: https://labs.vmware.com/vmtj/vprobes-deep-observability-into-the-esxi-hypervisor

Auch hier ist ein Link zum Referenzhandbuch für Workstation und Fusion. Es scheint ein bisschen alt zu sein, aber ich glaube nicht, dass es sich sehr verändert hat. (BTW, es funktioniert auf ESXi sowie Workstation und Fusion) http://www.vmware.com/pdf/ws7_f3_vprobes_reference.pdf

Verwandte Themen