mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-25 19:21:35 +01:00
126 lines
4.1 KiB
Python
Executable File
126 lines
4.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import common
|
|
from shell_helpers import LF
|
|
|
|
class Main(common.LkmcCliFunction):
|
|
def __init__(self):
|
|
super().__init__(
|
|
defaults={
|
|
'print_time': False,
|
|
},
|
|
description='''\
|
|
Run Linux kernel boot tests and benchmarks.
|
|
'''
|
|
)
|
|
self.add_argument(
|
|
'--size',
|
|
default=1,
|
|
type=int,
|
|
help='''\
|
|
Size of the tests to run. Scale:
|
|
|
|
* 1: a few seconds and important
|
|
* 2: < 5 minutes and important or a few seconds and not too important
|
|
* 3: all
|
|
'''
|
|
)
|
|
|
|
def _bench(self, **kwargs):
|
|
self.run(**kwargs)
|
|
|
|
def timed_main(self):
|
|
#bench() (
|
|
# "${root_dir}/bench-cmd" "./run --arch ${1}${extra_args}" "$self.env['bench_boot']"
|
|
#)
|
|
#
|
|
#newline() (
|
|
# echo >> "$self.env['bench_boot']"
|
|
#)
|
|
#
|
|
#gem5_insts() (
|
|
# printf "instructions $(./gem5-stat --arch "$1" sim_insts)\n" >> "$self.env['bench_boot']"
|
|
# newline
|
|
#)
|
|
#
|
|
#qemu_insts() (
|
|
# common_arch="$1"
|
|
# ./qemu-trace2txt --arch "$common_arch"
|
|
# common_qemu_trace_txt_file="$("$getvar" --arch "$common_arch" qemu_trace_txt_file)"
|
|
# printf "instructions $(wc -l "${common_qemu_trace_txt_file}" | cut -d' ' -f1)\n" >> "$self.env['bench_boot']"
|
|
# newline
|
|
#)
|
|
#
|
|
#rm -f "${self.env['bench_boot']}"
|
|
|
|
self.run = self.import_path_main('run')
|
|
run_args = self.get_common_args()
|
|
if self.env['emulator'] == 'gem5':
|
|
run_args['eval'] = 'm5 exit'
|
|
elif self.env['emulator'] == 'qemu':
|
|
run_args['eval'] = '/poweroff.out'
|
|
if (self.env['emulator'] == 'qemu' or
|
|
(self.env['emulator'] == 'gem5' and self.env['size'] >= 2)):
|
|
self._bench(**run_args)
|
|
if self.env['host_arch'] == self.env['arch']:
|
|
# TODO: find out why it fails.
|
|
if self.env['emulator'] != 'gem5':
|
|
self._bench(kvm=True, **run_args)
|
|
# newline
|
|
if self.env['emulator'] == 'qemu' and self.env['size'] >= 2:
|
|
self._bench(trace='exec_tb', **run_args)
|
|
# qemu_insts "$arch"
|
|
if self.env['emulator'] == 'gem5' and self.env['size'] >= 3:
|
|
self._bench(
|
|
extra_emulator_args=[
|
|
'--cpu-type',
|
|
'DerivO3CPU',
|
|
'--caches',
|
|
'--l2cache',
|
|
'--l1d_size=1024kB',
|
|
'--l1i_size=1024kB',
|
|
'--l2_size=1024kB',
|
|
'--l3_size=1024kB',
|
|
],
|
|
**run_args
|
|
)
|
|
# gem5_insts "$arch"
|
|
|
|
#arch=arm
|
|
#bench "$arch --eval '/poweroff.out'"
|
|
#newline
|
|
#if [ self.env['size'] -ge 2 ]; then
|
|
# bench "$arch --eval '/poweroff.out' --trace exec_tb"
|
|
# qemu_insts "$arch"
|
|
# bench "$arch --eval 'm5 exit' --emulator gem5"
|
|
# gem5_insts "$arch"
|
|
#fi
|
|
#if [ self.env['size'] -ge 3 ]; then
|
|
# bench "$arch --eval 'm5 exit' --emulator gem5 -- --cpu-type=HPI ${caches}"
|
|
# gem5_insts "$arch"
|
|
#fi
|
|
|
|
#arch=aarch64
|
|
#bench "$arch --eval '/poweroff.out'"
|
|
#newline
|
|
#if [ self.env['size'] -ge 2 ]; then
|
|
# bench "$arch --eval '/poweroff.out' --trace exec_tb"
|
|
# qemu_insts "$arch"
|
|
# bench "$arch --eval 'm5 exit' --emulator gem5"
|
|
# gem5_insts "$arch"
|
|
#fi
|
|
#if [ self.env['size'] -ge 3 ]; then
|
|
# bench "$arch --eval 'm5 exit' --emulator gem5 -- --cpu-type=HPI ${caches}"
|
|
# gem5_insts "$arch"
|
|
# #bench "$arch --eval 'm5 exit' --emulator gem5 --gem5-script biglittle"
|
|
# #gem5_insts "$arch"
|
|
# bench "$arch --eval 'm5 exit' --emulator gem5 --gem5-build-type fast"
|
|
# gem5_insts "$arch"
|
|
# bench "$arch --eval 'm5 exit' --emulator gem5 --gem5-build-type debug"
|
|
# gem5_insts "$arch"
|
|
#fi
|
|
|
|
if __name__ == '__main__':
|
|
Main().cli_exit()
|
|
|