使用libvirt的命令行工具可以获取虚机的内存信息,方式如下:
$ virsh list
Id Name State
----------------------------------------------------
46 instance-0000081a running
117 instance-000008c0 running
122 instance-00000920 running
$ virsh dommemstat 46
actual 2097152
swap_in 0
rss 1031060
actual是启动虚机时设置的最大内存,rss是qemu process在宿主机上所占用的内存,可以通过 grep VmRSS /proc/$(pidof qemu-system-x86_64)/status 得到。但是我们要获取的是虚机内部的内存使用情况,这样明显不能满足需求。
我们还需要给虚机做些配置,给虚机的libvirtxml描述文件添加下面的内容:
#每10s钟收集一次
<memballoon model="virtio">
<stats period="10"/>
</memballoon>
再次查询虚机的内存信息,得到:
actual 2097152
swap_in 0
swap_out 0
unused 1904816
available 2050112
rss 299952
unused代表虚机内部未使用的内存量,available代表虚机内部识别出的总内存量,那么虚机内部的内存使用量则是(available-unused)的结果。
使用wmi
类“Win32_Processor”中LoadPercentage属性为当前的cpu使用率
示例代码: Private Sub Timer1_Timer()
Dim WMI服务 As Object
Dim 对象 As Object
Dim 子对象 As Object
Dim 电脑名 As String
Dim 刷新 As Long
刷新 = 0
电脑名 = "" '表示本地计算机
Set WMI服务 = GetObject("winmgmts://" & 电脑名 & "/root/cimv2")
Set 对象 = WMI服务InstancesOf("Win32_Processor")
MeCurrentX = 0
MeCurrentY = 0
For Each 子对象 In 对象
If 刷新 = 0 Then
刷新 = 1
MeCls
End If
MePrint 子对象Name & "[" & 子对象CurrentClockSpeed & "Hz] 使用率:" & _
子对象LoadPercentage & "%"
Next
End Sub
一般 *** 作系统的内存占用率有两种:
1、是基于虚拟内存的计算 ,我记得在早些时候xp系统看到的那个内存使用率就是这个。
2、基于物理 内存的计算 。
以windows来说,都有相应的内存函数来获取相应的值进行计算即可。
参考如下:
获取服务器性能CPU、内存、硬盘等使用率 get_used_statusphp
<php
include("connphp");
$obj_MyConnect = new MyConnect();
$obj_MyConnect -> connect(DB_SERVER,DB_USER,DB_PWD,DB_NMAE);
function get_used_status(){
$fp = popen('top -b -n 2 | grep -E "^(Cpu|Mem|Tasks)"',"r");//获取某一时刻系统cpu和内存使用情况
$rs = "";
while(!feof($fp)){
$rs = fread($fp,1024);
}
pclose($fp);
$sys_info = explode("\n",$rs);
$tast_info = explode(",",$sys_info[3]);//进程 数组
$cpu_info = explode(",",$sys_info[4]); //CPU占有量 数组
$mem_info = explode(",",$sys_info[5]); //内存占有量 数组
//正在运行的进程数
$tast_running = trim(trim($tast_info[1],'running'));
//CPU占有量
$cpu_usage = trim(trim($cpu_info[0],'Cpu(s): '),'%us'); //百分比
//内存占有量
$mem_total = trim(trim($mem_info[0],'Mem: '),'k total');
$mem_used = trim($mem_info[1],'k used');
$mem_usage = round(100intval($mem_used)/intval($mem_total),2); //百分比
$fp = popen('df -lh | grep -E "^(/)"',"r");
$rs = fread($fp,1024);
pclose($fp);
$rs = preg_replace("/\s{2,}/",' ',$rs); //把多个空格换成 “_”
$hd = explode(" ",$rs);
$hd_avail = trim($hd[3],'G'); //磁盘可用空间大小 单位G
$hd_usage = trim($hd[4],'%'); //挂载点 百分比
//print_r($hd);
//检测时间
$fp = popen("date +"%Y-%m-%d %H:%M"","r");
$rs = fread($fp,1024);
pclose($fp);
$detection_time = trim($rs);
以上就是关于libvirt-java怎么获得kvm虚拟机内存使用率全部的内容,包括:libvirt-java怎么获得kvm虚拟机内存使用率、vb.net如何获取当前进程的cpu和内存使用率、你好,请问内存占用率怎么计算谢谢。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)