mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-25 00:12:08 +08:00
290 lines
5.6 KiB
Python
290 lines
5.6 KiB
Python
from galaxy.job_metrics.instrumenters.cgroup import CgroupPlugin
|
|
|
|
CGROUPV1_PRODUCTION_EXAMPLE_2201 = """__cpu.cfs_period_us__
|
|
100000
|
|
__cpu.cfs_quota_us__
|
|
-1
|
|
__cpu.rt_period_us__
|
|
1000000
|
|
__cpu.rt_runtime_us__
|
|
0
|
|
__cpu.shares__
|
|
1024
|
|
__cpu.stat__
|
|
nr_periods 0
|
|
nr_throttled 0
|
|
throttled_time 0
|
|
__cpuacct.stat__
|
|
user 616
|
|
system 98
|
|
__cpuacct.usage__
|
|
7265342042
|
|
__cpuacct.usage_percpu__
|
|
0 7269963877 0 0 0 0 0 0 0 0
|
|
__memory.failcnt__
|
|
0
|
|
__memory.force_empty__
|
|
__memory.kmem.failcnt__
|
|
0
|
|
__memory.kmem.limit_in_bytes__
|
|
9223372036854771712
|
|
__memory.kmem.max_usage_in_bytes__
|
|
0
|
|
__memory.kmem.slabinfo__
|
|
__memory.kmem.tcp.failcnt__
|
|
0
|
|
__memory.kmem.tcp.limit_in_bytes__
|
|
9223372036854771712
|
|
__memory.kmem.tcp.max_usage_in_bytes__
|
|
0
|
|
__memory.kmem.tcp.usage_in_bytes__
|
|
0
|
|
__memory.kmem.usage_in_bytes__
|
|
0
|
|
__memory.limit_in_bytes__
|
|
9223372036854771712
|
|
__memory.max_usage_in_bytes__
|
|
264409088
|
|
__memory.memsw.failcnt__
|
|
0
|
|
__memory.memsw.limit_in_bytes__
|
|
9223372036854771712
|
|
__memory.memsw.max_usage_in_bytes__
|
|
264409088
|
|
__memory.memsw.usage_in_bytes__
|
|
103460864
|
|
__memory.move_charge_at_immigrate__
|
|
0
|
|
__memory.numa_stat__
|
|
total=25226 N0=25226
|
|
file=25071 N0=25071
|
|
anon=155 N0=155
|
|
unevictable=0 N0=0
|
|
__memory.oom_control__
|
|
oom_kill_disable 0
|
|
under_oom 0
|
|
__memory.pressure_level__
|
|
__memory.soft_limit_in_bytes__
|
|
9223372036854771712
|
|
__memory.stat__
|
|
cache 102690816
|
|
rss 655360
|
|
rss_huge 0
|
|
mapped_file 0
|
|
swap 0
|
|
pgpgin 136493
|
|
pgpgout 111262
|
|
pgfault 170611
|
|
pgmajfault 961
|
|
inactive_anon 0
|
|
active_anon 634880
|
|
inactive_file 101662720
|
|
active_file 1028096
|
|
unevictable 0
|
|
hierarchical_memory_limit 7853834240
|
|
hierarchical_memsw_limit 7853834240
|
|
total_cache 102690816
|
|
total_rss 655360
|
|
total_rss_huge 0
|
|
total_mapped_file 0
|
|
total_swap 0
|
|
total_pgpgin 136493
|
|
total_pgpgout 111262
|
|
total_pgfault 170611
|
|
total_pgmajfault 961
|
|
total_inactive_anon 0
|
|
total_active_anon 634880
|
|
total_inactive_file 101662720
|
|
total_active_file 1028096
|
|
total_unevictable 0
|
|
__memory.swappiness__
|
|
30
|
|
__memory.usage_in_bytes__
|
|
103391232
|
|
__memory.use_hierarchy__
|
|
1
|
|
"""
|
|
|
|
CGROUPV2_PRODUCTION_EXAMPLE_232 = """__cpu.idle__
|
|
0
|
|
__cpu.max__
|
|
max 100000
|
|
__cpu.max.burst__
|
|
0
|
|
__cpu.stat__
|
|
usage_usec 8992210
|
|
user_usec 6139150
|
|
system_usec 2853059
|
|
core_sched.force_idle_usec 0
|
|
nr_periods 0
|
|
nr_throttled 0
|
|
throttled_usec 0
|
|
nr_bursts 0
|
|
burst_usec 0
|
|
__cpu.weight__
|
|
100
|
|
__cpu.weight.nice__
|
|
0
|
|
__memory.current__
|
|
139350016
|
|
__memory.events__
|
|
low 0
|
|
high 0
|
|
max 0
|
|
oom 0
|
|
oom_kill 0
|
|
oom_group_kill 0
|
|
__memory.events.local__
|
|
low 0
|
|
high 0
|
|
max 0
|
|
oom 0
|
|
oom_kill 0
|
|
oom_group_kill 0
|
|
__memory.high__
|
|
max
|
|
__memory.low__
|
|
0
|
|
__memory.max__
|
|
max
|
|
__memory.min__
|
|
0
|
|
__memory.numa_stat__
|
|
anon N0=864256
|
|
file N0=129146880
|
|
kernel_stack N0=32768
|
|
pagetables N0=131072
|
|
sec_pagetables N0=0
|
|
shmem N0=0
|
|
file_mapped N0=0
|
|
file_dirty N0=0
|
|
file_writeback N0=0
|
|
swapcached N0=0
|
|
anon_thp N0=0
|
|
file_thp N0=0
|
|
shmem_thp N0=0
|
|
inactive_anon N0=819200
|
|
active_anon N0=20480
|
|
inactive_file N0=51507200
|
|
active_file N0=77639680
|
|
unevictable N0=0
|
|
slab_reclaimable N0=8638552
|
|
slab_unreclaimable N0=340136
|
|
workingset_refault_anon N0=0
|
|
workingset_refault_file N0=77
|
|
workingset_activate_anon N0=0
|
|
workingset_activate_file N0=0
|
|
workingset_restore_anon N0=0
|
|
workingset_restore_file N0=0
|
|
workingset_nodereclaim N0=0
|
|
__memory.oom.group__
|
|
0
|
|
__memory.peak__
|
|
339906560
|
|
__memory.reclaim__
|
|
__memory.stat__
|
|
anon 860160
|
|
file 129146880
|
|
kernel 9211904
|
|
kernel_stack 32768
|
|
pagetables 126976
|
|
sec_pagetables 0
|
|
percpu 0
|
|
sock 0
|
|
vmalloc 0
|
|
shmem 0
|
|
zswap 0
|
|
zswapped 0
|
|
file_mapped 0
|
|
file_dirty 0
|
|
file_writeback 0
|
|
swapcached 0
|
|
anon_thp 0
|
|
file_thp 0
|
|
shmem_thp 0
|
|
inactive_anon 815104
|
|
active_anon 20480
|
|
inactive_file 51507200
|
|
active_file 77639680
|
|
unevictable 0
|
|
slab_reclaimable 8642480
|
|
slab_unreclaimable 340904
|
|
slab 8983384
|
|
workingset_refault_anon 0
|
|
workingset_refault_file 77
|
|
workingset_activate_anon 0
|
|
workingset_activate_file 0
|
|
workingset_restore_anon 0
|
|
workingset_restore_file 0
|
|
workingset_nodereclaim 0
|
|
pgscan 0
|
|
pgsteal 0
|
|
pgscan_kswapd 0
|
|
pgscan_direct 0
|
|
pgsteal_kswapd 0
|
|
pgsteal_direct 0
|
|
pgfault 132306
|
|
pgmajfault 524
|
|
pgrefill 0
|
|
pgactivate 18958
|
|
pgdeactivate 0
|
|
pglazyfree 0
|
|
pglazyfreed 0
|
|
zswpin 0
|
|
zswpout 0
|
|
thp_fault_alloc 19
|
|
thp_collapse_alloc 0
|
|
__memory.swap.current__
|
|
0
|
|
__memory.swap.events__
|
|
high 0
|
|
max 0
|
|
fail 0
|
|
__memory.swap.high__
|
|
max
|
|
__memory.swap.max__
|
|
max
|
|
__memory.zswap.current__
|
|
0
|
|
__memory.zswap.max__
|
|
max
|
|
"""
|
|
|
|
|
|
def test_cgroupv1_collection(tmpdir):
|
|
plugin = CgroupPlugin()
|
|
job_dir = tmpdir.mkdir("job")
|
|
job_dir.join("__instrument_cgroup__metrics").write(CGROUPV1_PRODUCTION_EXAMPLE_2201)
|
|
properties = plugin.job_properties(1, job_dir)
|
|
assert "cpuacct.usage" in properties
|
|
assert properties["cpuacct.usage"] == 7265342042
|
|
assert "memory.limit_in_bytes" in properties
|
|
assert properties["memory.limit_in_bytes"] == 9223372036854771712
|
|
|
|
|
|
def test_cgroupv2_collection(tmpdir):
|
|
plugin = CgroupPlugin()
|
|
job_dir = tmpdir.mkdir("job")
|
|
job_dir.join("__instrument_cgroup__metrics").write(CGROUPV2_PRODUCTION_EXAMPLE_232)
|
|
properties = plugin.job_properties(1, job_dir)
|
|
assert "cpu.stat.usage_usec" in properties
|
|
assert properties["cpu.stat.usage_usec"] == 8992210
|
|
assert "memory.peak" in properties
|
|
assert properties["memory.peak"] == 339906560
|
|
|
|
|
|
def test_instrumentation(tmpdir):
|
|
# don't actually run the instrumentation but at least exercise the code the and make
|
|
# sure templating includes cgroup_mount override.
|
|
mock_cgroup_mount = "/proc/sys/made/up/cgroup/mount"
|
|
plugin = CgroupPlugin(
|
|
cgroup_mount=mock_cgroup_mount,
|
|
)
|
|
assert plugin.pre_execute_instrument(tmpdir) is None
|
|
collection_commands = plugin.post_execute_instrument(tmpdir)
|
|
assert len(collection_commands) == 2
|
|
cpu_command = collection_commands[0]
|
|
assert mock_cgroup_mount in cpu_command
|
|
memory_command = collection_commands[1]
|
|
assert mock_cgroup_mount in memory_command
|