Re: Using perf to access hardware events in pre-launched VM
Minggui Cao
Following is an example from my side:
./perf stat -C 1 -e mem_load_retired.l2_hit,mem_load_retired.l2_miss,mem_load_retired.l3_hit,mem_load_retired.l3_miss ./pmu_mem -a 1 -p 80 -l 1 -m 12
Performance counter stats for 'CPU(s) 1':
30260 mem_load_retired.l2_hit 7718 mem_load_retired.l2_miss 2587 mem_load_retired.l3_hit 4240 mem_load_retired.l3_miss
From: acrn-users@... <acrn-users@...>
On Behalf Of Minggui Cao
Sent: Saturday, March 26, 2022 8:57 AM To: acrn-users@... Subject: Re: [acrn-users] Using perf to access hardware events in pre-launched VM
Hi, Paolo, If you can read 0x186, it means, you can read PMU MSRs, it shall work for perf to sample some events, like LLC misses.
You can also check by: dmesg | grep -i pmu To check PMU driver is probed.
You don’t need modify the scenario file.
Minggui
From: acrn-users@... <acrn-users@...>
On Behalf Of Paolo Crotti
Hi Minggui, make[1]: ingresso nella directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» Board XML is fetched from /home/paoloc/acrn-work/my_board.xml Scneario XML is configuration fetched from /home/paoloc/acrn-work/notPartitioned-EnablePMU.xml /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/allocation.xml generated /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/unified.xml generated /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/config.mk generated Traceback (most recent call last): File "/home/paoloc/acrn-work/acrn-hypervisor/hypervisor/../misc/config_tools/board_config/board_cfg_gen.py", line 137, in <module> err_dic = main(ARGS) File "/home/paoloc/acrn-work/acrn-hypervisor/hypervisor/../misc/config_tools/board_config/board_cfg_gen.py", line 95, in main err_dic = board_info_h.generate_file(config) File "/home/paoloc/acrn-work/acrn-hypervisor/misc/config_tools/board_config/board_info_h.py", line 96, in generate_file scenario_cfg_lib.VM_DB[common.VM_TYPES[0]]['load_type'] == "PRE_LAUNCHED_VM" KeyError: 'RTVM' make[1]: uscita dalla directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» make -C /home/paoloc/acrn-work/acrn-hypervisor/hypervisor BOARD=/home/paoloc/acrn-work/my_board.xml SCENARIO=/home/paoloc/acrn-work/notPartitioned-EnablePMU.xml HV_OBJDIR=/home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor RELEASE= make[1]: ingresso nella directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/include/config.h generated Start pre-build static check ... make -C ../misc/hv_prebuild BOARD=my_board SCENARIO=partitioned_CAT TARGET_DIR=/home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs make[2]: ingresso nella directory «/home/paoloc/acrn-work/acrn-hypervisor/misc/hv_prebuild» make[2]: *** Nessuna regola per generare l'obiettivo «/home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/scenarios/partitioned_CAT/vm_configurations.c», necessario per «default». Arresto. make[2]: uscita dalla directory «/home/paoloc/acrn-work/acrn-hypervisor/misc/hv_prebuild» make[1]: *** [Makefile:413: pre_build] Errore 2 make[1]: uscita dalla directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» make: *** [Makefile:109: hypervisor] Errore 2
make[1]: ingresso nella directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» Board XML is fetched from /home/paoloc/acrn-work/my_board.xml Scneario XML is configuration fetched from /home/paoloc/acrn-work/notPartitioned-EnablePMU.xml /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/allocation.xml generated /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/unified.xml generated /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/config.mk generated Board configurations for my_board is generated successfully. Error: Scenario xml file validation failed: Error: vm:id=0: 'vm:id=0' Unexpected child with tag 'load_order' at position 2. Tag (name | clos | priority | legacy_vuart | console_vuart | communication_vuart) expected.: last call: <Element 'vm' at 0x7fd0629775e0> Error: vm:id=1: 'vm:id=1' Unexpected child with tag 'load_order' at position 2. Tag (name | clos | priority | legacy_vuart | console_vuart | communication_vuart) expected.: last call: <Element 'vm' at 0x7fd06297b6d0> make[1]: uscita dalla directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» make -C /home/paoloc/acrn-work/acrn-hypervisor/hypervisor BOARD=/home/paoloc/acrn-work/my_board.xml SCENARIO=/home/paoloc/acrn-work/notPartitioned-EnablePMU.xml HV_OBJDIR=/home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor RELEASE= make[1]: ingresso nella directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/include/config.h generated Start pre-build static check ... make -C ../misc/hv_prebuild BOARD=my_board SCENARIO=partitioned_CAT TARGET_DIR=/home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs make[2]: ingresso nella directory «/home/paoloc/acrn-work/acrn-hypervisor/misc/hv_prebuild» make[2]: *** Nessuna regola per generare l'obiettivo «/home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/scenarios/partitioned_CAT/vm_configurations.c», necessario per «default». Arresto. make[2]: uscita dalla directory «/home/paoloc/acrn-work/acrn-hypervisor/misc/hv_prebuild» make[1]: *** [Makefile:413: pre_build] Errore 2 make[1]: uscita dalla directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» make: *** [Makefile:109: hypervisor] Errore 2
make[1]: ingresso nella directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» Board XML is fetched from /home/paoloc/acrn-work/my_board.xml Scneario XML is configuration fetched from /home/paoloc/acrn-work/notPartitioned-EnablePMU.xml /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/allocation.xml generated /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/unified.xml generated /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/config.mk generated Board configurations for my_board is generated successfully. Error: Scenario xml file validation failed: Error: vm:id=0: 'vm:id=0' Unexpected child with tag 'lapic_passthrough' at position 4.: last call: <Element 'vm' at 0x7fc2ef3a05e0> Error: vm:id=1: 'vm:id=1' Unexpected child with tag 'lapic_passthrough' at position 4.: last call: <Element 'vm' at 0x7fc2ef3a4770> make[1]: uscita dalla directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» make -C /home/paoloc/acrn-work/acrn-hypervisor/hypervisor BOARD=/home/paoloc/acrn-work/my_board.xml SCENARIO=/home/paoloc/acrn-work/notPartitioned-EnablePMU.xml HV_OBJDIR=/home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor RELEASE= make[1]: ingresso nella directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» /home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/include/config.h generated Start pre-build static check ... make -C ../misc/hv_prebuild BOARD=my_board SCENARIO=partitioned_CAT TARGET_DIR=/home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs make[2]: ingresso nella directory «/home/paoloc/acrn-work/acrn-hypervisor/misc/hv_prebuild» make[2]: *** Nessuna regola per generare l'obiettivo «/home/paoloc/acrn-work/acrn-hypervisor/build/hypervisor/configs/scenarios/partitioned_CAT/vm_configurations.c», necessario per «default». Arresto. make[2]: uscita dalla directory «/home/paoloc/acrn-work/acrn-hypervisor/misc/hv_prebuild» make[1]: *** [Makefile:413: pre_build] Errore 2 make[1]: uscita dalla directory «/home/paoloc/acrn-work/acrn-hypervisor/hypervisor» make: *** [Makefile:109: hypervisor] Errore 2
|
|