psnmp性能测试

把简单程序改造成支持timeit测试的格式。

使用实验室的cisco26进行测试。

 

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
# GET Command Generator
#同步方式的snmpget性能测试

from pysnmp.entity.rfc3413.oneliner import cmdgen


def snmpget():
	errorIndication, errorStatus, errorIndex, varBinds = cmdgen.CommandGenerator().getCmd(
	  #0代表v1,1代表v2c
		cmdgen.CommunityData('my-agent', 'public', 1),
		cmdgen.UdpTransportTarget(('192.168.6.87', 161)),
	         '1.3.6.1.2.1.1.7.0'
	)
	print str(varBinds[0][1]);
	
def runit(loop=1):
    for i in range(loop):
        snmpget()
        #print i

if __name__ == "__main__":
    runit(loop=1)


E:\work\python\snmp>c:\python25\python.exe c:\Python25\lib\timeit.py -s "import
snmpgetperf" snmpgetperf.runit()
10 loops, best of 3: 51.8 msec per loop

E:\work\python\snmp>c:\python25\python.exe c:\Python25\lib\timeit.py -s "import
snmpgetperf" snmpgetperf.runit(10)
10 loops, best of 3: 537 msec per loop

E:\work\python\snmp>c:\python25\python.exe c:\Python25\lib\timeit.py -s "import
snmpgetperf" snmpgetperf.runit(100)
10 loops, best of 3: 7.7 sec per loop

单次get在50ms左右,100次get要7.7s

这个速度确实很慢。

对比一下perl的测试程序,100次get只要2.3s

#!/usr/local/bin/perl
#testsnmpwalk.pl
use strict;
use Net::SNMP;
use Time::HiRes qw(time);

unshift (@INC,"/nms/lib");
require ("SnmpUtil.pl");

my ($ip,$comm,$oid);

my $ArgNum = scalar(@ARGV);
if ($ArgNum == 0){
	print "[error]usage:testsnmp.pl ip commu oid [version].\n";
	$ip="192.168.6.87";
	$comm="public";
	$oid=".1.3.6.1.2.1.1.7";
}
else{
	 $ip=$ARGV[0];
	 $comm=$ARGV[1];
	 $oid=$ARGV[2];
}
my $loopnum=5;

my $Mib;
my @Index;
my @Oids=($oid);
my $DevColInfo;
$DevColInfo->{'LoopAddress'}=$ip;
$DevColInfo->{'SNMPCommunity'}=$comm;
$DevColInfo->{'SnmpVersion'}="v1";
my $CurValueRef={};#初始化参考变量
my $SnmpTimeOut=2;
my $SnmpRetry=1;

my $sec1=time();
for (my $i=0;$i<$loopnum;$i++){
	my $SNMPSess = &CreateSnmpSession_ext($Mib,$DevColInfo,$SnmpTimeOut,$SnmpRetry,$CurValueRef);
	if (!defined($SNMPSess)){
		my $Detail="Create SNMP session failed: [$DevColInfo->{'LoopAddress'},$DevColInfo->{'SNMPCommunity'}].\n";
						
	}
		my ($Error,@Result) = &SnmpGet($SNMPSess,$Mib,0,@Oids);
  #print("$Result[0].\n");
}
my $sec2=time()-$sec1;;
print "total $sec2.\n";

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值