单个进程cpu使用率

lyltiger 2010-03-26 03:36:11
使用java语言,监控linux系统的进程信息,例如进程名称、进程id、每个进程占用的内存、每个进程占用的cpu等等
进程id,单个进程的内存使用率等都通过下边的一些OID得到并计算出来。

现在的问题是:

只有 每个进程的cpu使用率没有计算出!
这是mib库需要的信息,
"1.3.6.1.2.1.25.4.2.1.1";
"1.3.6.1.2.1.25.4.2.1.2";
"1.3.6.1.2.1.25.4.2.1.3";
"1.3.6.1.2.1.25.4.2.1.4";
"1.3.6.1.2.1.25.4.2.1.5";
"1.3.6.1.2.1.25.4.2.1.6";
"1.3.6.1.2.1.25.4.2.1.7";

"1.3.6.1.2.1.25.5.1.1.2";//sigle mem
"1.3.6.1.2.1.25.5.1.1.1";//…… cpu time
求,单个进程cpu使用率的公式!

*****************************************************************************************

...全文
452 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyltiger 2011-03-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 carrd2008 的回复:]

我最关心的问题是:
LZ,你是怎么得到你的那些OID的?
我也想查询我机器上的mib库中代表CPU使用率的OUD,
但就是找不到。
[/Quote]

这个OID是一个库,各个厂商提供的,大的有思科,华为等
铁衣 2010-09-13
  • 打赏
  • 举报
回复
我最关心的问题是:
LZ,你是怎么得到你的那些OID的?
我也想查询我机器上的mib库中代表CPU使用率的OUD,
但就是找不到。
lyltiger 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ivorytower 的回复:]

楼主能否帖一下如何操作Linux的一些代码?学习一下
[/Quote]

然后 通过 mib库 以及一些相应计算得到期望值!
lyltiger 2010-03-26
  • 打赏
  • 举报
回复
这是其中一个主要类
public List getTaskExecute(String flag, String ipstr, String[] oidArr) {
List list= new ArrayList();
TransportMapping transport = null;
try {
PDU request = new PDU();
CommunityTarget target = null;
Snmp snmp = null;
try {
Address targetAddress = GenericAddress.parse("udp:" + ipstr
+ "/161");
transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);
transport.listen();// 监听

target = new CommunityTarget();
target.setCommunity(new OctetString("public"));// 设置共同体名
target.setAddress(targetAddress);// 设置目标Agent地址
target.setRetries(2);// 重试次数
target.setTimeout(5000);// 超时设置
target.setVersion(SnmpConstants.version1);// 版本
} catch (IOException e) {
e.printStackTrace();
}
if ("scalar".equals(flag)) {
request.setType(PDU.GET);// 操作类型GET-PDU类型
for (int i = 0; i < oidArr.length; i++) {
request.add(new VariableBinding(new OID(oidArr[i])));// OID设置
}
// 发出request PDU
ResponseEvent respEvt = null;
try {
respEvt = snmp.send(request, target);
} catch (IOException e) {
e.printStackTrace();
}
// 读取得到的绑定变量 解析
if (respEvt != null && respEvt.getResponse() != null) {
Vector<VariableBinding> revBindings = respEvt.getResponse()
.getVariableBindings();
for (int i = 0; i < revBindings.size(); i++) {
VariableBinding vbs = revBindings.elementAt(i);

list.add(vbs.getVariable().toLong());
}
}
}else if("table".equals(flag)){
TableUtils table = new TableUtils(snmp, new DefaultPDUFactory(PDU.GETNEXT));
List<TableEvent> tvList = table.getTable(target, arrayList2OidArray(oidArr), null, null);

for(int i=0; i<tvList.size(); i++) {
VariableBinding[] v = tvList.get(i).getColumns();
if(v != null && v.length > 0){
for(int j=0; j<v.length; j++) {
if(v[j]==null) { //on condition that response get successfully but has null VariableBinding
list.add("");//responseList
} else {
list.add(v[j].getVariable());//responseList
}
}
}else{
System.out.println(";");
}
}
}
} catch (RuntimeException e) {
e.printStackTrace();
}finally{
try {
if(transport != null) {
transport.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return list;
}
  • 打赏
  • 举报
回复
楼主能否帖一下如何操作Linux的一些代码?学习一下
lyltiger 2010-03-26
  • 打赏
  • 举报
回复
嗯?
到哪个模块了?

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧