@@ -87,7 +87,8 @@ def unlock_core(path_locked: pathlib.Path,
8787def cpu_mem_benchmark (cpu_threads : Optional [int ] = 5 ,
8888 mem_threads : Optional [int ] = 5 ,
8989 cpu_work : Optional [int ] = 100 ,
90- core : Optional [int ] = None ) -> List :
90+ core : Optional [int ] = None ,
91+ total_mem : Optional [float ] = None ) -> List :
9192 """
9293 Run cpu and memory benchmark.
9394
@@ -99,28 +100,30 @@ def cpu_mem_benchmark(cpu_threads: Optional[int] = 5,
99100 :type cpu_work: Optional[int]
100101 :param core:
101102 :type core: Optional[int]
103+ :param total_mem:
104+ :type total_mem: Optional[float]
102105
103106 :return:
104107 :rtype: List
105108 """
106- total_mem_bytes = 100.0 / os .cpu_count ()
109+ total_mem = f" { total_mem } M" if total_mem else f" { 100.0 / os .cpu_count ()} %"
107110 cpu_work_per_thread = int (cpu_work / cpu_threads )
108111
109112 cpu_procs = []
110113 cpu_prog = [
111114 f"{ this_dir .joinpath ('cpu-benchmark' )} " , f"{ cpu_work_per_thread } " ]
112115 mem_prog = ["stress-ng" , "--vm" , f"{ mem_threads } " ,
113- "--vm-bytes" , f"{ total_mem_bytes } % " , "--vm-keep" ]
116+ "--vm-bytes" , f"{ total_mem } " , "--vm-keep" ]
114117
115118 for i in range (cpu_threads ):
116119 cpu_proc = subprocess .Popen (cpu_prog )
117120 if core :
118121 os .sched_setaffinity (cpu_proc .pid , {core })
119122 cpu_procs .append (cpu_proc )
120123
121- # mem_proc = subprocess.Popen(mem_prog)
122- # if core:
123- # os.sched_setaffinity(mem_proc.pid, {core})
124+ mem_proc = subprocess .Popen (mem_prog )
125+ if core :
126+ os .sched_setaffinity (mem_proc .pid , {core })
124127
125128 return cpu_procs
126129
@@ -144,6 +147,7 @@ def get_parser() -> argparse.ArgumentParser:
144147 help = "Path to cores file." )
145148 parser .add_argument ("--cpu-work" , default = None , help = "Amount of CPU work." )
146149 parser .add_argument ("--gpu-work" , default = None , help = "Amount of GPU work." )
150+ parser .add_argument ("--mem" , default = None , help = "Max amount (in MB) of memory consumption." )
147151 parser .add_argument ("--out" , help = "output files name." )
148152 return parser
149153
@@ -199,7 +203,8 @@ def main():
199203 cpu_procs = cpu_mem_benchmark (cpu_threads = int (10 * args .percent_cpu ),
200204 mem_threads = int (10 - 10 * args .percent_cpu ),
201205 cpu_work = int (args .cpu_work ),
202- core = core )
206+ core = core ,
207+ total_mem = args .mem )
203208 for proc in cpu_procs :
204209 proc .wait ()
205210 mem_kill = subprocess .Popen (["killall" , "stress-ng" ])
0 commit comments