micromegas 0.1.2__tar.gz → 0.1.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {micromegas-0.1.2 → micromegas-0.1.6}/PKG-INFO +3 -1
- micromegas-0.1.6/micromegas/__init__.py +10 -0
- micromegas-0.1.6/micromegas/client.py +182 -0
- micromegas-0.1.6/micromegas/perfetto.py +205 -0
- {micromegas-0.1.2 → micromegas-0.1.6}/micromegas/request.py +16 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/android_energy_consumer_descriptor_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/android_log_constants_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/builtin_clock_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/descriptor_pb2.py +62 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/gpu_counter_descriptor_pb2.py +44 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/perf_events_pb2.py +46 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/protolog_common_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/sys_stats_counters_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/trace_stats_pb2.py +48 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_game_intervention_list_config_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_input_event_config_pb2.py +42 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_log_config_pb2.py +37 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_polled_state_config_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_sdk_sysprop_guard_config_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_system_property_config_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/network_trace_config_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/packages_list_config_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/pixel_modem_config_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/protolog_config_pb2.py +41 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/chrome/chrome_config_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/chrome/v8_config_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/data_source_config_pb2.py +120 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/etw/etw_config_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/ftrace/ftrace_config_pb2.py +48 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/gpu/gpu_counter_config_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/gpu/vulkan_memory_config_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/inode_file/inode_file_config_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/interceptor_config_pb2.py +37 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/interceptors/console_config_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/power/android_power_config_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/process_stats/process_stats_config_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/profiling/heapprofd_config_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/profiling/java_hprof_config_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/profiling/perf_event_config_pb2.py +43 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/statsd/atom_ids_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/statsd/statsd_tracing_config_pb2.py +39 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/sys_stats/sys_stats_config_pb2.py +39 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/system_info/system_info_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/test_config_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/trace_config_pb2.py +90 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/track_event/track_event_config_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/android_game_intervention_list_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/android_log_pb2.py +43 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/android_system_property_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/camera_event_pb2.py +48 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/frame_timeline_event_pb2.py +54 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/gpu_mem_event_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/graphics/rect_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/graphics_frame_event_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/initial_display_state_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/network_trace_pb2.py +46 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/packages_list_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/pixel_modem_events_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/protolog_pb2.py +43 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/shell_transition_pb2.py +42 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/surfaceflinger_common_pb2.py +59 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/surfaceflinger_layers_pb2.py +72 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions_pb2.py +76 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/winscope_extensions_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/chrome/chrome_benchmark_metadata_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/chrome/chrome_metadata_pb2.py +50 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/chrome/chrome_trace_event_pb2.py +56 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/chrome/chrome_trigger_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/chrome/v8_pb2.py +70 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/clock_snapshot_pb2.py +41 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/etw/etw_event_bundle_pb2.py +37 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/etw/etw_event_pb2.py +37 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/etw/etw_pb2.py +48 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/extension_descriptor_pb2.py +37 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/filesystem/inode_file_map_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/android_fs_pb2.py +46 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/binder_pb2.py +52 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/block_pb2.py +72 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/cgroup_pb2.py +52 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/clk_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/cma_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/compaction_pb2.py +62 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/cpuhp_pb2.py +44 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/cros_ec_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/dcvsh_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/dma_fence_pb2.py +44 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/dmabuf_heap_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/dpu_pb2.py +42 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/drm_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ext4_pb2.py +224 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/f2fs_pb2.py +106 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/fastrpc_pb2.py +44 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/fence_pb2.py +42 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/filemap_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ftrace_event_bundle_pb2.py +66 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ftrace_event_pb2.py +105 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ftrace_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ftrace_stats_pb2.py +42 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/g2d_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/generic_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/google_icc_trace_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/google_irm_trace_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/gpu_mem_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/gpu_scheduler_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/hyp_pb2.py +44 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/i2c_pb2.py +50 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ion_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ipi_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/irq_pb2.py +44 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/kgsl_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/kmem_pb2.py +122 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/kvm_pb2.py +106 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/lowmemorykiller_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/lwis_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/mali_pb2.py +98 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/mdss_pb2.py +76 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/mm_event_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/net_pb2.py +42 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/oom_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/panel_pb2.py +42 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/perf_trace_counters_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/power_pb2.py +60 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/printk_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/raw_syscalls_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/regulator_pb2.py +48 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/rpm_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/samsung_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/sched_pb2.py +64 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/scm_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/sde_pb2.py +46 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/signal_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/skb_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/sock_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/sync_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/synthetic_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/systrace_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/task_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/tcp_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/thermal_exynos_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/thermal_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/trusty_pb2.py +70 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ufs_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/v4l2_pb2.py +46 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/virtio_gpu_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/virtio_video_pb2.py +42 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/vmscan_pb2.py +46 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/workqueue_pb2.py +42 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/gpu/gpu_counter_event_pb2.py +39 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/gpu/gpu_log_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/gpu/gpu_render_stage_event_pb2.py +58 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/gpu/vulkan_api_event_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/gpu/vulkan_memory_event_pb2.py +44 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/interned_data/interned_data_pb2.py +45 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/memory_graph_pb2.py +48 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/perfetto/perfetto_metatrace_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/perfetto/tracing_service_event_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/power/android_energy_estimation_breakdown_pb2.py +39 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/power/android_entity_state_residency_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/power/battery_counters_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/power/power_rails_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/profiling/deobfuscation_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/profiling/heap_graph_pb2.py +57 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/profiling/profile_common_pb2.py +50 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/profiling/profile_packet_pb2.py +72 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/profiling/smaps_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ps/process_stats_pb2.py +42 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ps/process_tree_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/remote_clock_sync_pb2.py +39 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/statsd/statsd_atom_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/sys_stats/sys_stats_pb2.py +55 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/system_info/cpu_info_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/system_info_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/test_event_pb2.py +39 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/trace_packet_defaults_pb2.py +39 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/trace_packet_pb2.py +107 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/trace_pb2.py +37 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/trace_uuid_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_active_processes_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_application_state_info_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_compositor_scheduler_state_pb2.py +75 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_content_settings_event_info_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_frame_reporter_pb2.py +44 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_histogram_sample_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_keyed_service_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_latency_info_pb2.py +42 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_legacy_ipc_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_message_pump_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_mojo_event_info_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_process_descriptor_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_renderer_scheduler_state_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_thread_descriptor_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_user_event_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_window_handle_event_info_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/counter_descriptor_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/debug_annotation_pb2.py +44 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/log_message_pb2.py +40 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/pixel_modem_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/process_descriptor_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/range_of_interest_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/screenshot_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/source_location_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/task_execution_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/thread_descriptor_pb2.py +38 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/track_descriptor_pb2.py +41 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/track_event_pb2.py +74 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/translation/translation_table_pb2.py +70 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/trigger_pb2.py +36 -0
- micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ui_state_pb2.py +38 -0
- micromegas-0.1.6/micromegas/time.py +30 -0
- {micromegas-0.1.2 → micromegas-0.1.6}/pyproject.toml +5 -3
- micromegas-0.1.2/micromegas/__init__.py +0 -2
- micromegas-0.1.2/micromegas/client.py +0 -67
- {micromegas-0.1.2 → micromegas-0.1.6}/README.md +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: micromegas
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.6
|
4
4
|
Summary: Python analytics client for https://github.com/madesroches/micromegas/
|
5
5
|
Author: Marc-Antoine Desroches
|
6
6
|
Author-email: madesroches@gmail.com
|
@@ -10,7 +10,9 @@ Classifier: Programming Language :: Python :: 3.10
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.11
|
11
11
|
Classifier: Programming Language :: Python :: 3.12
|
12
12
|
Requires-Dist: cbor2 (>=5.6.3,<6.0.0)
|
13
|
+
Requires-Dist: crc (>=7.0.0,<8.0.0)
|
13
14
|
Requires-Dist: pandas (>=2.2.2,<3.0.0)
|
15
|
+
Requires-Dist: protobuf (>=5.27.1,<6.0.0)
|
14
16
|
Requires-Dist: pyarrow (>=16.0.0,<17.0.0)
|
15
17
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
16
18
|
Requires-Dist: tabulate (>=0.9.0,<0.10.0)
|
@@ -0,0 +1,182 @@
|
|
1
|
+
from . import request
|
2
|
+
from . import time
|
3
|
+
import cbor2
|
4
|
+
|
5
|
+
|
6
|
+
class Client:
|
7
|
+
def __init__(self, base_url, headers={}):
|
8
|
+
self.analytics_base_url = base_url + "analytics/"
|
9
|
+
self.headers = headers
|
10
|
+
|
11
|
+
def find_process(self, process_id):
|
12
|
+
return request.request(
|
13
|
+
self.analytics_base_url + "find_process",
|
14
|
+
{"process_id": process_id},
|
15
|
+
headers=self.headers,
|
16
|
+
)
|
17
|
+
|
18
|
+
def query_processes(self, begin, end, limit):
|
19
|
+
return request.request(
|
20
|
+
self.analytics_base_url + "query_processes",
|
21
|
+
{
|
22
|
+
"begin": time.format_datetime(begin),
|
23
|
+
"end": time.format_datetime(end),
|
24
|
+
"limit": limit,
|
25
|
+
},
|
26
|
+
headers=self.headers,
|
27
|
+
)
|
28
|
+
|
29
|
+
def query_streams(self, begin, end, limit, process_id=None, tag_filter=None):
|
30
|
+
args = {
|
31
|
+
"begin": time.format_datetime(begin),
|
32
|
+
"end": time.format_datetime(end),
|
33
|
+
"limit": limit,
|
34
|
+
"process_id": process_id,
|
35
|
+
"tag_filter": tag_filter,
|
36
|
+
}
|
37
|
+
|
38
|
+
return request.request(
|
39
|
+
self.analytics_base_url + "query_streams",
|
40
|
+
args,
|
41
|
+
headers=self.headers,
|
42
|
+
)
|
43
|
+
|
44
|
+
def query_blocks(self, begin, end, limit, stream_id):
|
45
|
+
args = {
|
46
|
+
"begin": time.format_datetime(begin),
|
47
|
+
"end": time.format_datetime(end),
|
48
|
+
"limit": limit,
|
49
|
+
"stream_id": stream_id,
|
50
|
+
}
|
51
|
+
|
52
|
+
return request.request(
|
53
|
+
self.analytics_base_url + "query_blocks",
|
54
|
+
args,
|
55
|
+
headers=self.headers,
|
56
|
+
)
|
57
|
+
|
58
|
+
def query_spans(self, begin, end, limit, stream_id):
|
59
|
+
return request.request(
|
60
|
+
self.analytics_base_url + "query_spans",
|
61
|
+
{
|
62
|
+
"begin": time.format_datetime(begin),
|
63
|
+
"end": time.format_datetime(end),
|
64
|
+
"limit": limit,
|
65
|
+
"stream_id": stream_id,
|
66
|
+
},
|
67
|
+
headers=self.headers,
|
68
|
+
)
|
69
|
+
|
70
|
+
def query_thread_events(self, begin, end, limit, stream_id):
|
71
|
+
return request.request(
|
72
|
+
self.analytics_base_url + "query_thread_events",
|
73
|
+
{
|
74
|
+
"begin": time.format_datetime(begin),
|
75
|
+
"end": time.format_datetime(end),
|
76
|
+
"limit": limit,
|
77
|
+
"stream_id": stream_id,
|
78
|
+
},
|
79
|
+
headers=self.headers,
|
80
|
+
)
|
81
|
+
|
82
|
+
def query_log_entries(
|
83
|
+
self,
|
84
|
+
begin,
|
85
|
+
end,
|
86
|
+
limit=None, # Necessary if stream_id is specified, ignored otherwise
|
87
|
+
stream_id=None, # If none, query is run on cached lakehouse using query engine
|
88
|
+
sql=None, # Necessary if stream_id is None, ignored otherwise
|
89
|
+
):
|
90
|
+
return request.request(
|
91
|
+
self.analytics_base_url + "query_log_entries",
|
92
|
+
{
|
93
|
+
"begin": time.format_datetime(begin),
|
94
|
+
"end": time.format_datetime(end),
|
95
|
+
"limit": limit,
|
96
|
+
"stream_id": stream_id,
|
97
|
+
"sql": sql,
|
98
|
+
},
|
99
|
+
headers=self.headers,
|
100
|
+
)
|
101
|
+
|
102
|
+
def query_metrics(self, begin, end, limit=None, stream_id=None, sql=None):
|
103
|
+
return request.request(
|
104
|
+
self.analytics_base_url + "query_metrics",
|
105
|
+
{
|
106
|
+
"begin": time.format_datetime(begin),
|
107
|
+
"end": time.format_datetime(end),
|
108
|
+
"limit": limit,
|
109
|
+
"stream_id": stream_id,
|
110
|
+
"sql": sql,
|
111
|
+
},
|
112
|
+
headers=self.headers,
|
113
|
+
)
|
114
|
+
|
115
|
+
def query_view(self, view_set_name, view_instance_id, begin, end, sql):
|
116
|
+
return request.request(
|
117
|
+
self.analytics_base_url + "query_view",
|
118
|
+
{
|
119
|
+
"view_set_name": view_set_name,
|
120
|
+
"view_instance_id": view_instance_id,
|
121
|
+
"begin": time.format_datetime(begin),
|
122
|
+
"end": time.format_datetime(end),
|
123
|
+
"sql": sql,
|
124
|
+
},
|
125
|
+
headers=self.headers,
|
126
|
+
)
|
127
|
+
|
128
|
+
def query_partitions(self):
|
129
|
+
args = {}
|
130
|
+
return request.request(
|
131
|
+
self.analytics_base_url + "query_partitions",
|
132
|
+
args,
|
133
|
+
headers=self.headers,
|
134
|
+
)
|
135
|
+
|
136
|
+
def __stream_request(self, endpoint, args):
|
137
|
+
response = request.streamed_request(
|
138
|
+
self.analytics_base_url + endpoint,
|
139
|
+
args,
|
140
|
+
headers=self.headers,
|
141
|
+
)
|
142
|
+
while response.raw.readable():
|
143
|
+
try:
|
144
|
+
print(cbor2.load(response.raw))
|
145
|
+
except cbor2.CBORDecodeEOF:
|
146
|
+
break
|
147
|
+
|
148
|
+
def create_or_update_partitions(
|
149
|
+
self, view_set_name, view_instance_id, begin, end, partition_delta_seconds
|
150
|
+
):
|
151
|
+
args = {
|
152
|
+
"view_set_name": view_set_name,
|
153
|
+
"view_instance_id": view_instance_id,
|
154
|
+
"begin": time.format_datetime(begin),
|
155
|
+
"end": time.format_datetime(end),
|
156
|
+
"partition_delta_seconds": partition_delta_seconds,
|
157
|
+
}
|
158
|
+
self.__stream_request("create_or_update_partitions", args)
|
159
|
+
|
160
|
+
def merge_partitions(
|
161
|
+
self, view_set_name, view_instance_id, begin, end, partition_delta_seconds
|
162
|
+
):
|
163
|
+
args = {
|
164
|
+
"view_set_name": view_set_name,
|
165
|
+
"view_instance_id": view_instance_id,
|
166
|
+
"begin": time.format_datetime(begin),
|
167
|
+
"end": time.format_datetime(end),
|
168
|
+
"partition_delta_seconds": partition_delta_seconds,
|
169
|
+
}
|
170
|
+
self.__stream_request("merge_partitions", args)
|
171
|
+
|
172
|
+
def retire_partitions(
|
173
|
+
self, view_set_name, view_instance_id, begin, end, partition_delta_seconds
|
174
|
+
):
|
175
|
+
args = {
|
176
|
+
"view_set_name": view_set_name,
|
177
|
+
"view_instance_id": view_instance_id,
|
178
|
+
"begin": time.format_datetime(begin),
|
179
|
+
"end": time.format_datetime(end),
|
180
|
+
"partition_delta_seconds": partition_delta_seconds,
|
181
|
+
}
|
182
|
+
self.__stream_request("retire_partitions", args)
|
@@ -0,0 +1,205 @@
|
|
1
|
+
import crc
|
2
|
+
from tqdm import tqdm
|
3
|
+
|
4
|
+
|
5
|
+
# hack to allow perfetto proto imports
|
6
|
+
# you can then import the protos like this: from protos.perfetto.trace import trace_pb2
|
7
|
+
def load_perfetto_protos():
|
8
|
+
import sys
|
9
|
+
import pathlib
|
10
|
+
|
11
|
+
perfetto_folder = pathlib.Path(__file__).parent.absolute() / "thirdparty/perfetto"
|
12
|
+
sys.path.append(str(perfetto_folder))
|
13
|
+
|
14
|
+
|
15
|
+
def crc64_str(s):
|
16
|
+
calculator = crc.Calculator(crc.Crc64.CRC64)
|
17
|
+
return calculator.checksum(str.encode(s))
|
18
|
+
|
19
|
+
|
20
|
+
def generate_batches(df_blocks):
|
21
|
+
nb_events_threshold = 1024 * 1024
|
22
|
+
begin = df_blocks.iloc[0]["begin_time"]
|
23
|
+
end = df_blocks.iloc[0]["end_time"]
|
24
|
+
nb_events = 0
|
25
|
+
for index, block in df_blocks.iterrows():
|
26
|
+
nb_events += block["nb_objects"]
|
27
|
+
end = block["end_time"]
|
28
|
+
if nb_events > nb_events_threshold:
|
29
|
+
yield (begin, end, nb_events)
|
30
|
+
begin = block["end_time"]
|
31
|
+
nb_events = 0
|
32
|
+
if nb_events > 0:
|
33
|
+
yield (begin, end, nb_events)
|
34
|
+
|
35
|
+
|
36
|
+
class Writer:
|
37
|
+
"""
|
38
|
+
Fetches thread events from the analytics server and formats them in the perfetto format.
|
39
|
+
Traces can be viewed using https://ui.perfetto.dev/
|
40
|
+
"""
|
41
|
+
|
42
|
+
def __init__(self, client, process_id, exe):
|
43
|
+
load_perfetto_protos()
|
44
|
+
from protos.perfetto.trace import trace_pb2, trace_packet_pb2
|
45
|
+
|
46
|
+
self.names = {}
|
47
|
+
self.categories = {}
|
48
|
+
self.source_locations = {}
|
49
|
+
self.first = True
|
50
|
+
self.client = client
|
51
|
+
self.trace = trace_pb2.Trace()
|
52
|
+
self.packets = self.trace.packet
|
53
|
+
self.process_uuid = crc64_str(process_id)
|
54
|
+
|
55
|
+
packet = trace_packet_pb2.TracePacket()
|
56
|
+
packet.track_descriptor.uuid = self.process_uuid
|
57
|
+
packet.track_descriptor.process.pid = 1
|
58
|
+
packet.track_descriptor.process.process_name = exe
|
59
|
+
self.packets.append(packet)
|
60
|
+
|
61
|
+
def get_name_iid(self, name):
|
62
|
+
iid = self.names.get(name)
|
63
|
+
is_new = False
|
64
|
+
if iid is None:
|
65
|
+
is_new = True
|
66
|
+
iid = len(self.names) + 1
|
67
|
+
self.names[name] = iid
|
68
|
+
return iid, is_new
|
69
|
+
|
70
|
+
def get_category_iid(self, cat):
|
71
|
+
iid = self.categories.get(cat)
|
72
|
+
is_new = False
|
73
|
+
if iid is None:
|
74
|
+
is_new = True
|
75
|
+
iid = len(self.categories) + 1
|
76
|
+
self.categories[cat] = iid
|
77
|
+
return iid, is_new
|
78
|
+
|
79
|
+
def get_location_iid(self, loc):
|
80
|
+
iid = self.source_locations.get(loc)
|
81
|
+
is_new = False
|
82
|
+
if iid is None:
|
83
|
+
is_new = True
|
84
|
+
iid = len(self.source_locations) + 1
|
85
|
+
self.source_locations[loc] = iid
|
86
|
+
return iid, is_new
|
87
|
+
|
88
|
+
def append_thread(self, stream_id, thread_name, thread_id):
|
89
|
+
from protos.perfetto.trace import trace_pb2, trace_packet_pb2, track_event
|
90
|
+
|
91
|
+
df_blocks = self.client.query_blocks(
|
92
|
+
begin=None, end=None, limit=100_000, stream_id=stream_id
|
93
|
+
)
|
94
|
+
if df_blocks.empty:
|
95
|
+
return
|
96
|
+
|
97
|
+
packet = trace_packet_pb2.TracePacket()
|
98
|
+
thread_uuid = crc64_str(stream_id)
|
99
|
+
packet.track_descriptor.uuid = thread_uuid
|
100
|
+
packet.track_descriptor.parent_uuid = self.process_uuid
|
101
|
+
packet.track_descriptor.thread.pid = 1
|
102
|
+
packet.track_descriptor.thread.tid = thread_id
|
103
|
+
packet.track_descriptor.thread.thread_name = thread_name
|
104
|
+
self.packets.append(packet)
|
105
|
+
trusted_packet_sequence_id = 1
|
106
|
+
|
107
|
+
batches = list(generate_batches(df_blocks))
|
108
|
+
for begin, end, limit in tqdm(batches, unit="event batches"):
|
109
|
+
df_spans = self.client.query_spans(
|
110
|
+
begin, end, limit=limit, stream_id=stream_id
|
111
|
+
)
|
112
|
+
begin_ns = df_spans["begin"].astype("int64")
|
113
|
+
end_ns = df_spans["end"].astype("int64")
|
114
|
+
for index, span in df_spans.iterrows():
|
115
|
+
packet = trace_packet_pb2.TracePacket()
|
116
|
+
packet.timestamp = begin_ns[index]
|
117
|
+
packet.track_event.type = (
|
118
|
+
track_event.track_event_pb2.TrackEvent.Type.TYPE_SLICE_BEGIN
|
119
|
+
)
|
120
|
+
packet.track_event.track_uuid = thread_uuid
|
121
|
+
span_name = span["name"]
|
122
|
+
name_iid, new_name = self.get_name_iid(span_name)
|
123
|
+
packet.track_event.name_iid = name_iid
|
124
|
+
category_iid, new_category = self.get_category_iid(span["target"])
|
125
|
+
packet.track_event.category_iids.append(category_iid)
|
126
|
+
|
127
|
+
source_location = (span["filename"], span["line"])
|
128
|
+
source_location_iid, new_source_location = self.get_location_iid(source_location)
|
129
|
+
packet.track_event.source_location_iid = source_location_iid
|
130
|
+
if self.first:
|
131
|
+
# this is necessary for interning to work
|
132
|
+
self.first = False
|
133
|
+
packet.first_packet_on_sequence = True
|
134
|
+
packet.sequence_flags = 3
|
135
|
+
else:
|
136
|
+
packet.sequence_flags = 2
|
137
|
+
|
138
|
+
if new_name:
|
139
|
+
event_name = packet.interned_data.event_names.add()
|
140
|
+
event_name.iid = name_iid
|
141
|
+
event_name.name = span_name
|
142
|
+
if new_category:
|
143
|
+
cat_name = packet.interned_data.event_categories.add()
|
144
|
+
cat_name.iid = category_iid
|
145
|
+
cat_name.name = span["target"]
|
146
|
+
if new_source_location:
|
147
|
+
loc = packet.interned_data.source_locations.add()
|
148
|
+
loc.iid = source_location_iid
|
149
|
+
loc.file_name = source_location[0]
|
150
|
+
loc.line_number = source_location[1]
|
151
|
+
|
152
|
+
packet.trusted_packet_sequence_id = trusted_packet_sequence_id
|
153
|
+
self.packets.append(packet)
|
154
|
+
|
155
|
+
packet = trace_packet_pb2.TracePacket()
|
156
|
+
packet.timestamp = end_ns[index]
|
157
|
+
packet.track_event.type = (
|
158
|
+
track_event.track_event_pb2.TrackEvent.Type.TYPE_SLICE_END
|
159
|
+
)
|
160
|
+
packet.track_event.track_uuid = thread_uuid
|
161
|
+
packet.track_event.name_iid = name_iid
|
162
|
+
packet.track_event.category_iids.append(category_iid)
|
163
|
+
packet.track_event.source_location_iid = source_location_iid
|
164
|
+
packet.sequence_flags = 2
|
165
|
+
packet.trusted_packet_sequence_id = trusted_packet_sequence_id
|
166
|
+
|
167
|
+
self.packets.append(packet)
|
168
|
+
|
169
|
+
def write_file(self, filename):
|
170
|
+
with open(filename, "wb") as f:
|
171
|
+
f.write(self.trace.SerializeToString())
|
172
|
+
|
173
|
+
|
174
|
+
def get_process_cpu_streams(client, process_id):
|
175
|
+
def prop_to_dict(props):
|
176
|
+
prop_dict = {}
|
177
|
+
for p in props:
|
178
|
+
prop_dict[p["key"]] = p["value"]
|
179
|
+
return prop_dict
|
180
|
+
|
181
|
+
def get_thread_name(prop_dict):
|
182
|
+
return prop_dict["thread-name"]
|
183
|
+
|
184
|
+
def get_thread_id(prop_dict):
|
185
|
+
return int(prop_dict["thread-id"])
|
186
|
+
|
187
|
+
df_streams = client.query_streams(
|
188
|
+
begin=None, end=None, limit=1024, tag_filter="cpu", process_id=process_id
|
189
|
+
)
|
190
|
+
df_streams["properties"] = df_streams["properties"].apply(prop_to_dict)
|
191
|
+
df_streams["thread_name"] = df_streams["properties"].apply(get_thread_name)
|
192
|
+
df_streams["thread_id"] = df_streams["properties"].apply(get_thread_id)
|
193
|
+
return df_streams
|
194
|
+
|
195
|
+
|
196
|
+
def write_process_trace(client, process_id, trace_filepath):
|
197
|
+
process_df = client.find_process(process_id)
|
198
|
+
assert process_df.shape[0] == 1
|
199
|
+
process = process_df.iloc[0]
|
200
|
+
streams = get_process_cpu_streams(client, process_id)
|
201
|
+
writer = Writer(client, process_id, process["exe"])
|
202
|
+
for index, stream in tqdm(list(streams.iterrows()), unit="threads"):
|
203
|
+
stream_id = stream["thread_id"]
|
204
|
+
writer.append_thread(stream["stream_id"], stream["thread_name"], stream_id)
|
205
|
+
writer.write_file(trace_filepath)
|
@@ -18,3 +18,19 @@ def request(url, args, headers={}):
|
|
18
18
|
)
|
19
19
|
table = pq.read_table(io.BytesIO(response.content))
|
20
20
|
return table.to_pandas()
|
21
|
+
|
22
|
+
def streamed_request(url, args, headers={}):
|
23
|
+
response = requests.post(
|
24
|
+
url,
|
25
|
+
headers=headers,
|
26
|
+
data=cbor2.dumps(args),
|
27
|
+
stream=True,
|
28
|
+
timeout=300,
|
29
|
+
)
|
30
|
+
if response.status_code != 200:
|
31
|
+
raise Exception(
|
32
|
+
"http request url={2} failed with code={0} text={1}".format(
|
33
|
+
response.status_code, response.text, url
|
34
|
+
)
|
35
|
+
)
|
36
|
+
return response
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
4
|
+
# source: protos/perfetto/common/android_energy_consumer_descriptor.proto
|
5
|
+
# Protobuf Python Version: 5.27.1
|
6
|
+
"""Generated protocol buffer code."""
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
11
|
+
from google.protobuf.internal import builder as _builder
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
14
|
+
5,
|
15
|
+
27,
|
16
|
+
1,
|
17
|
+
'',
|
18
|
+
'protos/perfetto/common/android_energy_consumer_descriptor.proto'
|
19
|
+
)
|
20
|
+
# @@protoc_insertion_point(imports)
|
21
|
+
|
22
|
+
_sym_db = _symbol_database.Default()
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n?protos/perfetto/common/android_energy_consumer_descriptor.proto\x12\x0fperfetto.protos\"`\n\x15\x41ndroidEnergyConsumer\x12\x1a\n\x12\x65nergy_consumer_id\x18\x01 \x01(\x05\x12\x0f\n\x07ordinal\x18\x02 \x01(\x05\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\"c\n\x1f\x41ndroidEnergyConsumerDescriptor\x12@\n\x10\x65nergy_consumers\x18\x01 \x03(\x0b\x32&.perfetto.protos.AndroidEnergyConsumer')
|
28
|
+
|
29
|
+
_globals = globals()
|
30
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
31
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protos.perfetto.common.android_energy_consumer_descriptor_pb2', _globals)
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
33
|
+
DESCRIPTOR._loaded_options = None
|
34
|
+
_globals['_ANDROIDENERGYCONSUMER']._serialized_start=84
|
35
|
+
_globals['_ANDROIDENERGYCONSUMER']._serialized_end=180
|
36
|
+
_globals['_ANDROIDENERGYCONSUMERDESCRIPTOR']._serialized_start=182
|
37
|
+
_globals['_ANDROIDENERGYCONSUMERDESCRIPTOR']._serialized_end=281
|
38
|
+
# @@protoc_insertion_point(module_scope)
|
micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/android_log_constants_pb2.py
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
4
|
+
# source: protos/perfetto/common/android_log_constants.proto
|
5
|
+
# Protobuf Python Version: 5.27.1
|
6
|
+
"""Generated protocol buffer code."""
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
11
|
+
from google.protobuf.internal import builder as _builder
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
14
|
+
5,
|
15
|
+
27,
|
16
|
+
1,
|
17
|
+
'',
|
18
|
+
'protos/perfetto/common/android_log_constants.proto'
|
19
|
+
)
|
20
|
+
# @@protoc_insertion_point(imports)
|
21
|
+
|
22
|
+
_sym_db = _symbol_database.Default()
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n2protos/perfetto/common/android_log_constants.proto\x12\x0fperfetto.protos*\x8e\x01\n\x0c\x41ndroidLogId\x12\x0f\n\x0bLID_DEFAULT\x10\x00\x12\r\n\tLID_RADIO\x10\x01\x12\x0e\n\nLID_EVENTS\x10\x02\x12\x0e\n\nLID_SYSTEM\x10\x03\x12\r\n\tLID_CRASH\x10\x04\x12\r\n\tLID_STATS\x10\x05\x12\x10\n\x0cLID_SECURITY\x10\x06\x12\x0e\n\nLID_KERNEL\x10\x07*\x9b\x01\n\x12\x41ndroidLogPriority\x12\x14\n\x10PRIO_UNSPECIFIED\x10\x00\x12\x0f\n\x0bPRIO_UNUSED\x10\x01\x12\x10\n\x0cPRIO_VERBOSE\x10\x02\x12\x0e\n\nPRIO_DEBUG\x10\x03\x12\r\n\tPRIO_INFO\x10\x04\x12\r\n\tPRIO_WARN\x10\x05\x12\x0e\n\nPRIO_ERROR\x10\x06\x12\x0e\n\nPRIO_FATAL\x10\x07')
|
28
|
+
|
29
|
+
_globals = globals()
|
30
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
31
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protos.perfetto.common.android_log_constants_pb2', _globals)
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
33
|
+
DESCRIPTOR._loaded_options = None
|
34
|
+
_globals['_ANDROIDLOGID']._serialized_start=72
|
35
|
+
_globals['_ANDROIDLOGID']._serialized_end=214
|
36
|
+
_globals['_ANDROIDLOGPRIORITY']._serialized_start=217
|
37
|
+
_globals['_ANDROIDLOGPRIORITY']._serialized_end=372
|
38
|
+
# @@protoc_insertion_point(module_scope)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
4
|
+
# source: protos/perfetto/common/builtin_clock.proto
|
5
|
+
# Protobuf Python Version: 5.27.1
|
6
|
+
"""Generated protocol buffer code."""
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
11
|
+
from google.protobuf.internal import builder as _builder
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
14
|
+
5,
|
15
|
+
27,
|
16
|
+
1,
|
17
|
+
'',
|
18
|
+
'protos/perfetto/common/builtin_clock.proto'
|
19
|
+
)
|
20
|
+
# @@protoc_insertion_point(imports)
|
21
|
+
|
22
|
+
_sym_db = _symbol_database.Default()
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*protos/perfetto/common/builtin_clock.proto\x12\x0fperfetto.protos*\xa3\x02\n\x0c\x42uiltinClock\x12\x19\n\x15\x42UILTIN_CLOCK_UNKNOWN\x10\x00\x12\x1a\n\x16\x42UILTIN_CLOCK_REALTIME\x10\x01\x12!\n\x1d\x42UILTIN_CLOCK_REALTIME_COARSE\x10\x02\x12\x1b\n\x17\x42UILTIN_CLOCK_MONOTONIC\x10\x03\x12\"\n\x1e\x42UILTIN_CLOCK_MONOTONIC_COARSE\x10\x04\x12\x1f\n\x1b\x42UILTIN_CLOCK_MONOTONIC_RAW\x10\x05\x12\x1a\n\x16\x42UILTIN_CLOCK_BOOTTIME\x10\x06\x12\x15\n\x11\x42UILTIN_CLOCK_TSC\x10\t\x12\x18\n\x14\x42UILTIN_CLOCK_MAX_ID\x10?\"\x04\x08\x07\x10\x07\"\x04\x08\x08\x10\x08')
|
28
|
+
|
29
|
+
_globals = globals()
|
30
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
31
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protos.perfetto.common.builtin_clock_pb2', _globals)
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
33
|
+
DESCRIPTOR._loaded_options = None
|
34
|
+
_globals['_BUILTINCLOCK']._serialized_start=64
|
35
|
+
_globals['_BUILTINCLOCK']._serialized_end=355
|
36
|
+
# @@protoc_insertion_point(module_scope)
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
4
|
+
# source: protos/perfetto/common/descriptor.proto
|
5
|
+
# Protobuf Python Version: 5.27.1
|
6
|
+
"""Generated protocol buffer code."""
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
11
|
+
from google.protobuf.internal import builder as _builder
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
14
|
+
5,
|
15
|
+
27,
|
16
|
+
1,
|
17
|
+
'',
|
18
|
+
'protos/perfetto/common/descriptor.proto'
|
19
|
+
)
|
20
|
+
# @@protoc_insertion_point(imports)
|
21
|
+
|
22
|
+
_sym_db = _symbol_database.Default()
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'protos/perfetto/common/descriptor.proto\x12\x0fperfetto.protos\"G\n\x11\x46ileDescriptorSet\x12\x32\n\x04\x66ile\x18\x01 \x03(\x0b\x32$.perfetto.protos.FileDescriptorProto\"\xbf\x02\n\x13\x46ileDescriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07package\x18\x02 \x01(\t\x12\x12\n\ndependency\x18\x03 \x03(\t\x12\x19\n\x11public_dependency\x18\n \x03(\x05\x12\x17\n\x0fweak_dependency\x18\x0b \x03(\x05\x12\x36\n\x0cmessage_type\x18\x04 \x03(\x0b\x32 .perfetto.protos.DescriptorProto\x12\x37\n\tenum_type\x18\x05 \x03(\x0b\x32$.perfetto.protos.EnumDescriptorProto\x12\x38\n\textension\x18\x07 \x03(\x0b\x32%.perfetto.protos.FieldDescriptorProtoJ\x04\x08\x06\x10\x07J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\x0c\x10\r\"\xd2\x03\n\x0f\x44\x65scriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x34\n\x05\x66ield\x18\x02 \x03(\x0b\x32%.perfetto.protos.FieldDescriptorProto\x12\x38\n\textension\x18\x06 \x03(\x0b\x32%.perfetto.protos.FieldDescriptorProto\x12\x35\n\x0bnested_type\x18\x03 \x03(\x0b\x32 .perfetto.protos.DescriptorProto\x12\x37\n\tenum_type\x18\x04 \x03(\x0b\x32$.perfetto.protos.EnumDescriptorProto\x12\x39\n\noneof_decl\x18\x08 \x03(\x0b\x32%.perfetto.protos.OneofDescriptorProto\x12\x46\n\x0ereserved_range\x18\t \x03(\x0b\x32..perfetto.protos.DescriptorProto.ReservedRange\x12\x15\n\rreserved_name\x18\n \x03(\t\x1a+\n\rReservedRange\x12\r\n\x05start\x18\x01 \x01(\x05\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x05J\x04\x08\x05\x10\x06J\x04\x08\x07\x10\x08\"\x9e\x02\n\x13UninterpretedOption\x12;\n\x04name\x18\x02 \x03(\x0b\x32-.perfetto.protos.UninterpretedOption.NamePart\x12\x18\n\x10identifier_value\x18\x03 \x01(\t\x12\x1a\n\x12positive_int_value\x18\x04 \x01(\x04\x12\x1a\n\x12negative_int_value\x18\x05 \x01(\x03\x12\x14\n\x0c\x64ouble_value\x18\x06 \x01(\x01\x12\x14\n\x0cstring_value\x18\x07 \x01(\x0c\x12\x17\n\x0f\x61ggregate_value\x18\x08 \x01(\t\x1a\x33\n\x08NamePart\x12\x11\n\tname_part\x18\x01 \x01(\t\x12\x14\n\x0cis_extension\x18\x02 \x01(\x08\"c\n\x0c\x46ieldOptions\x12\x0e\n\x06packed\x18\x02 \x01(\x08\x12\x43\n\x14uninterpreted_option\x18\xe7\x07 \x03(\x0b\x32$.perfetto.protos.UninterpretedOption\"\xaf\x05\n\x14\x46ieldDescriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06number\x18\x03 \x01(\x05\x12:\n\x05label\x18\x04 \x01(\x0e\x32+.perfetto.protos.FieldDescriptorProto.Label\x12\x38\n\x04type\x18\x05 \x01(\x0e\x32*.perfetto.protos.FieldDescriptorProto.Type\x12\x11\n\ttype_name\x18\x06 \x01(\t\x12\x10\n\x08\x65xtendee\x18\x02 \x01(\t\x12\x15\n\rdefault_value\x18\x07 \x01(\t\x12.\n\x07options\x18\x08 \x01(\x0b\x32\x1d.perfetto.protos.FieldOptions\x12\x13\n\x0boneof_index\x18\t \x01(\x05\"\xb6\x02\n\x04Type\x12\x0f\n\x0bTYPE_DOUBLE\x10\x01\x12\x0e\n\nTYPE_FLOAT\x10\x02\x12\x0e\n\nTYPE_INT64\x10\x03\x12\x0f\n\x0bTYPE_UINT64\x10\x04\x12\x0e\n\nTYPE_INT32\x10\x05\x12\x10\n\x0cTYPE_FIXED64\x10\x06\x12\x10\n\x0cTYPE_FIXED32\x10\x07\x12\r\n\tTYPE_BOOL\x10\x08\x12\x0f\n\x0bTYPE_STRING\x10\t\x12\x0e\n\nTYPE_GROUP\x10\n\x12\x10\n\x0cTYPE_MESSAGE\x10\x0b\x12\x0e\n\nTYPE_BYTES\x10\x0c\x12\x0f\n\x0bTYPE_UINT32\x10\r\x12\r\n\tTYPE_ENUM\x10\x0e\x12\x11\n\rTYPE_SFIXED32\x10\x0f\x12\x11\n\rTYPE_SFIXED64\x10\x10\x12\x0f\n\x0bTYPE_SINT32\x10\x11\x12\x0f\n\x0bTYPE_SINT64\x10\x12\"C\n\x05Label\x12\x12\n\x0eLABEL_OPTIONAL\x10\x01\x12\x12\n\x0eLABEL_REQUIRED\x10\x02\x12\x12\n\x0eLABEL_REPEATED\x10\x03J\x04\x08\n\x10\x0b\"T\n\x14OneofDescriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12.\n\x07options\x18\x02 \x01(\x0b\x32\x1d.perfetto.protos.OneofOptions\"\x80\x01\n\x13\x45numDescriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\x05value\x18\x02 \x03(\x0b\x32).perfetto.protos.EnumValueDescriptorProto\x12\x15\n\rreserved_name\x18\x05 \x03(\tJ\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05\">\n\x18\x45numValueDescriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06number\x18\x02 \x01(\x05J\x04\x08\x03\x10\x04\"!\n\x0cOneofOptions*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02J\x06\x08\xe7\x07\x10\xe8\x07')
|
28
|
+
|
29
|
+
_globals = globals()
|
30
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
31
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protos.perfetto.common.descriptor_pb2', _globals)
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
33
|
+
DESCRIPTOR._loaded_options = None
|
34
|
+
_globals['_FILEDESCRIPTORSET']._serialized_start=60
|
35
|
+
_globals['_FILEDESCRIPTORSET']._serialized_end=131
|
36
|
+
_globals['_FILEDESCRIPTORPROTO']._serialized_start=134
|
37
|
+
_globals['_FILEDESCRIPTORPROTO']._serialized_end=453
|
38
|
+
_globals['_DESCRIPTORPROTO']._serialized_start=456
|
39
|
+
_globals['_DESCRIPTORPROTO']._serialized_end=922
|
40
|
+
_globals['_DESCRIPTORPROTO_RESERVEDRANGE']._serialized_start=867
|
41
|
+
_globals['_DESCRIPTORPROTO_RESERVEDRANGE']._serialized_end=910
|
42
|
+
_globals['_UNINTERPRETEDOPTION']._serialized_start=925
|
43
|
+
_globals['_UNINTERPRETEDOPTION']._serialized_end=1211
|
44
|
+
_globals['_UNINTERPRETEDOPTION_NAMEPART']._serialized_start=1160
|
45
|
+
_globals['_UNINTERPRETEDOPTION_NAMEPART']._serialized_end=1211
|
46
|
+
_globals['_FIELDOPTIONS']._serialized_start=1213
|
47
|
+
_globals['_FIELDOPTIONS']._serialized_end=1312
|
48
|
+
_globals['_FIELDDESCRIPTORPROTO']._serialized_start=1315
|
49
|
+
_globals['_FIELDDESCRIPTORPROTO']._serialized_end=2002
|
50
|
+
_globals['_FIELDDESCRIPTORPROTO_TYPE']._serialized_start=1617
|
51
|
+
_globals['_FIELDDESCRIPTORPROTO_TYPE']._serialized_end=1927
|
52
|
+
_globals['_FIELDDESCRIPTORPROTO_LABEL']._serialized_start=1929
|
53
|
+
_globals['_FIELDDESCRIPTORPROTO_LABEL']._serialized_end=1996
|
54
|
+
_globals['_ONEOFDESCRIPTORPROTO']._serialized_start=2004
|
55
|
+
_globals['_ONEOFDESCRIPTORPROTO']._serialized_end=2088
|
56
|
+
_globals['_ENUMDESCRIPTORPROTO']._serialized_start=2091
|
57
|
+
_globals['_ENUMDESCRIPTORPROTO']._serialized_end=2219
|
58
|
+
_globals['_ENUMVALUEDESCRIPTORPROTO']._serialized_start=2221
|
59
|
+
_globals['_ENUMVALUEDESCRIPTORPROTO']._serialized_end=2283
|
60
|
+
_globals['_ONEOFOPTIONS']._serialized_start=2285
|
61
|
+
_globals['_ONEOFOPTIONS']._serialized_end=2318
|
62
|
+
# @@protoc_insertion_point(module_scope)
|
micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/gpu_counter_descriptor_pb2.py
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
4
|
+
# source: protos/perfetto/common/gpu_counter_descriptor.proto
|
5
|
+
# Protobuf Python Version: 5.27.1
|
6
|
+
"""Generated protocol buffer code."""
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
11
|
+
from google.protobuf.internal import builder as _builder
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
14
|
+
5,
|
15
|
+
27,
|
16
|
+
1,
|
17
|
+
'',
|
18
|
+
'protos/perfetto/common/gpu_counter_descriptor.proto'
|
19
|
+
)
|
20
|
+
# @@protoc_insertion_point(imports)
|
21
|
+
|
22
|
+
_sym_db = _symbol_database.Default()
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n3protos/perfetto/common/gpu_counter_descriptor.proto\x12\x0fperfetto.protos\"\xb6\x0b\n\x14GpuCounterDescriptor\x12\x43\n\x05specs\x18\x01 \x03(\x0b\x32\x34.perfetto.protos.GpuCounterDescriptor.GpuCounterSpec\x12\x45\n\x06\x62locks\x18\x02 \x03(\x0b\x32\x35.perfetto.protos.GpuCounterDescriptor.GpuCounterBlock\x12\x1e\n\x16min_sampling_period_ns\x18\x03 \x01(\x04\x12\x1e\n\x16max_sampling_period_ns\x18\x04 \x01(\x04\x12&\n\x1esupports_instrumented_sampling\x18\x05 \x01(\x08\x1a\x8e\x03\n\x0eGpuCounterSpec\x12\x12\n\ncounter_id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x18\n\x0eint_peak_value\x18\x05 \x01(\x03H\x00\x12\x1b\n\x11\x64ouble_peak_value\x18\x06 \x01(\x01H\x00\x12J\n\x0fnumerator_units\x18\x07 \x03(\x0e\x32\x31.perfetto.protos.GpuCounterDescriptor.MeasureUnit\x12L\n\x11\x64\x65nominator_units\x18\x08 \x03(\x0e\x32\x31.perfetto.protos.GpuCounterDescriptor.MeasureUnit\x12\x19\n\x11select_by_default\x18\t \x01(\x08\x12\x45\n\x06groups\x18\n \x03(\x0e\x32\x35.perfetto.protos.GpuCounterDescriptor.GpuCounterGroupB\x0c\n\npeak_valueJ\x04\x08\x04\x10\x05\x1as\n\x0fGpuCounterBlock\x12\x10\n\x08\x62lock_id\x18\x01 \x01(\r\x12\x16\n\x0e\x62lock_capacity\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x13\n\x0b\x63ounter_ids\x18\x05 \x03(\r\"u\n\x0fGpuCounterGroup\x12\x10\n\x0cUNCLASSIFIED\x10\x00\x12\n\n\x06SYSTEM\x10\x01\x12\x0c\n\x08VERTICES\x10\x02\x12\r\n\tFRAGMENTS\x10\x03\x12\x0e\n\nPRIMITIVES\x10\x04\x12\n\n\x06MEMORY\x10\x05\x12\x0b\n\x07\x43OMPUTE\x10\x06\"\xac\x04\n\x0bMeasureUnit\x12\x08\n\x04NONE\x10\x00\x12\x07\n\x03\x42IT\x10\x01\x12\x0b\n\x07KILOBIT\x10\x02\x12\x0b\n\x07MEGABIT\x10\x03\x12\x0b\n\x07GIGABIT\x10\x04\x12\x0b\n\x07TERABIT\x10\x05\x12\x0b\n\x07PETABIT\x10\x06\x12\x08\n\x04\x42YTE\x10\x07\x12\x0c\n\x08KILOBYTE\x10\x08\x12\x0c\n\x08MEGABYTE\x10\t\x12\x0c\n\x08GIGABYTE\x10\n\x12\x0c\n\x08TERABYTE\x10\x0b\x12\x0c\n\x08PETABYTE\x10\x0c\x12\t\n\x05HERTZ\x10\r\x12\r\n\tKILOHERTZ\x10\x0e\x12\r\n\tMEGAHERTZ\x10\x0f\x12\r\n\tGIGAHERTZ\x10\x10\x12\r\n\tTERAHERTZ\x10\x11\x12\r\n\tPETAHERTZ\x10\x12\x12\x0e\n\nNANOSECOND\x10\x13\x12\x0f\n\x0bMICROSECOND\x10\x14\x12\x0f\n\x0bMILLISECOND\x10\x15\x12\n\n\x06SECOND\x10\x16\x12\n\n\x06MINUTE\x10\x17\x12\x08\n\x04HOUR\x10\x18\x12\n\n\x06VERTEX\x10\x19\x12\t\n\x05PIXEL\x10\x1a\x12\x0c\n\x08TRIANGLE\x10\x1b\x12\r\n\tPRIMITIVE\x10&\x12\x0c\n\x08\x46RAGMENT\x10\'\x12\r\n\tMILLIWATT\x10\x1c\x12\x08\n\x04WATT\x10\x1d\x12\x0c\n\x08KILOWATT\x10\x1e\x12\t\n\x05JOULE\x10\x1f\x12\x08\n\x04VOLT\x10 \x12\n\n\x06\x41MPERE\x10!\x12\x0b\n\x07\x43\x45LSIUS\x10\"\x12\x0e\n\nFAHRENHEIT\x10#\x12\n\n\x06KELVIN\x10$\x12\x0b\n\x07PERCENT\x10%\x12\x0f\n\x0bINSTRUCTION\x10(')
|
28
|
+
|
29
|
+
_globals = globals()
|
30
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
31
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protos.perfetto.common.gpu_counter_descriptor_pb2', _globals)
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
33
|
+
DESCRIPTOR._loaded_options = None
|
34
|
+
_globals['_GPUCOUNTERDESCRIPTOR']._serialized_start=73
|
35
|
+
_globals['_GPUCOUNTERDESCRIPTOR']._serialized_end=1535
|
36
|
+
_globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERSPEC']._serialized_start=342
|
37
|
+
_globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERSPEC']._serialized_end=740
|
38
|
+
_globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERBLOCK']._serialized_start=742
|
39
|
+
_globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERBLOCK']._serialized_end=857
|
40
|
+
_globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERGROUP']._serialized_start=859
|
41
|
+
_globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERGROUP']._serialized_end=976
|
42
|
+
_globals['_GPUCOUNTERDESCRIPTOR_MEASUREUNIT']._serialized_start=979
|
43
|
+
_globals['_GPUCOUNTERDESCRIPTOR_MEASUREUNIT']._serialized_end=1535
|
44
|
+
# @@protoc_insertion_point(module_scope)
|