Sample Header Ad - 728x90

Does QEMU on Linux Ubuntu 20.04.1 x86_64 have a memory leak?

4 votes
1 answer
1281 views
We have a testbed for an OSv project that runs (5.15.0-72-generic - 20.04.1-Ubuntu - x86_64) the same instances a lot of time. The script for the execution of a single run is very simple and follows:
while [ $x -le $t ]
   do
   ./scripts/capstan_run.sh "$delay"
   now="$(date +'%d%m%Y-%H%M%S')"
   ./scripts/stats.sh > stats/"$x"_"$delay"_stats_"$now".txt & PID=$!
   sleep "$delay" #sleep delay mills for the execution
   kill $PID ; wait $PID 2>/dev/null
   echo "Delay $delay before fetches"
   sleep "$delay" #sleep delay mills before fetch files
   ./scripts/fetch_files.sh "$delay"
   ./scripts/shutdown_vm.sh

   ((x++))
   done
capstun_run.sh initiates the simulation with containers executing on the QEMU virtualization layer. It then sleeps and retrieves files from the instances. The shutdown.sh script terminates QEMU:
qemu-system-x86_64
**We observe between runs an increment of used memory. It is constant and never decreases.** The server has 126G of RAM and 24 CPUs. For example we observe that used memory starts from 8% and arrives at 12%, with an increment of 0.1%.
Date				Memory		Disk		CPU
...
07/04/2023-163242		12.03%		27%		15.00%		
07/04/2023-163247		12.03%		27%		16.00%		
07/04/2023-163252		12.03%		27%		16.00%		
07/04/2023-163257		12.03%		27%		16.00%		
07/04/2023-163303		12.03%		27%		16.00%		
07/04/2023-163308		12.04%		27%		16.00%		
07/04/2023-163313		12.03%		27%		16.00%		
07/04/2023-163318		12.04%		27%		15.00%		
07/04/2023-163323		12.04%		27%		16.00%		
07/04/2023-163328		12.04%		27%		16.00%		
07/04/2023-163334		12.04%		27%		16.00%		
07/04/2023-163339		12.04%		27%		16.00%		
07/04/2023-163344		12.06%		27%		16.00%		
07/04/2023-163349		12.08%		27%		16.00%		
07/04/2023-163354		12.09%		27%		16.00%		
07/04/2023-163359		12.09%		27%		15.00%		
07/04/2023-163405		12.09%		27%		15.00%		
07/04/2023-163410		12.09%		27%		15.00%		
07/04/2023-163415		12.09%		27%		15.00%
Is there any memory leak in QEMU? === UPDATE === The stats.sh computes the used % mem in this manner:
-m | awk 'NR==2{printf "%.2f%%\t\t", $3*100/$2 }
So I think there is an error, because it's the "used/total*100" e does not include the cache. Is my evaluation correct?
Asked by robob (604 rep)
May 22, 2023, 05:15 AM
Last activity: Aug 2, 2023, 08:16 AM