﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Todd-随笔分类-freebsd</title><link>http://www.blogjava.net/Todd/category/50098.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 17 Aug 2012 11:23:18 GMT</lastBuildDate><pubDate>Fri, 17 Aug 2012 11:23:18 GMT</pubDate><ttl>60</ttl><item><title>【unix】crontab 中使用环境变量</title><link>http://www.blogjava.net/Todd/archive/2012/08/17/385698.html</link><dc:creator>Todd</dc:creator><author>Todd</author><pubDate>Fri, 17 Aug 2012 08:13:00 GMT</pubDate><guid>http://www.blogjava.net/Todd/archive/2012/08/17/385698.html</guid><wfw:comment>http://www.blogjava.net/Todd/comments/385698.html</wfw:comment><comments>http://www.blogjava.net/Todd/archive/2012/08/17/385698.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Todd/comments/commentRss/385698.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Todd/services/trackbacks/385698.html</trackback:ping><description><![CDATA[<p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; ">环境:(产品,平台,机型,软件版本,等)AIX5L</p>
<p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; ">问题描述:crontab中启动的shell脚本不能正常运行，但是使用手动执行没有问题，在$home/.profile中设定了脚本所需要的环境变量。</p>
<p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; ">解答:cron命令的默认shell是/usr/bin/bsh，如果要在cron启动的脚本中使用ksh，就必须在脚本中的第一行添加&#8220;#!/usr/bin/ksh&#8221;的声明。</p>
<p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; ">如果cron进程启动的shell脚本要用登录时的环境变量，就必须在cron启动的shell脚本中添加下面的内容，才能够在启动的脚本中使用<br />
$home/.profile文件中的环境变量。</p>
<p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; ">. $home/.profile</p>
<p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; ">这是因为cron进程执行的shell脚本是不会自动加载用户目录下的.profile文件，所以需要脚本自己加载所需要的环境变量。<br />
================<br />
环境变量文件加载顺序<br />
<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; color: blue; ">/etc/profile:</span><span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">&nbsp;此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.</span><br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">并从/etc/profile.d目录的配置文件中搜集shell的设置.</span><br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; color: blue; ">/etc/bashrc:</span><span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">&nbsp;为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.</span><br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; color: blue; ">~/.bash_profile:</span><span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">&nbsp;每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该</span><br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.</span><br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; color: blue; ">~/.bashrc:</span><span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">&nbsp;该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该</span><br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">该文件被读取.</span><br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; color: blue; ">~/.bash_logout:</span><span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">&nbsp;当每次退出系统(退出bash shell)时,执行该文件.&nbsp;</span><br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.</span><br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">~/.bash_profile 是交互式、login 方式进入 bash 运行的</span><br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">~/.bashrc 是交互式 non-login 方式进入 bash 运行的</span><br style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; " />
<span style="color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; background-color: #28557e; ">通常二者设置大致相同，所以通常前者会调用后者。</span>&nbsp;<br />
</p>
<img src ="http://www.blogjava.net/Todd/aggbug/385698.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Todd/" target="_blank">Todd</a> 2012-08-17 16:13 <a href="http://www.blogjava.net/Todd/archive/2012/08/17/385698.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VI常用命令</title><link>http://www.blogjava.net/Todd/archive/2012/07/18/383419.html</link><dc:creator>Todd</dc:creator><author>Todd</author><pubDate>Wed, 18 Jul 2012 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/Todd/archive/2012/07/18/383419.html</guid><wfw:comment>http://www.blogjava.net/Todd/comments/383419.html</wfw:comment><comments>http://www.blogjava.net/Todd/archive/2012/07/18/383419.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Todd/comments/commentRss/383419.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Todd/services/trackbacks/383419.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;VI常用命令_______________________________________________________一般模式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/Todd/archive/2012/07/18/383419.html'>阅读全文</a><img src ="http://www.blogjava.net/Todd/aggbug/383419.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Todd/" target="_blank">Todd</a> 2012-07-18 17:32 <a href="http://www.blogjava.net/Todd/archive/2012/07/18/383419.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【2】freebsd netperf 网络性能测试工具 </title><link>http://www.blogjava.net/Todd/archive/2012/03/29/373010.html</link><dc:creator>Todd</dc:creator><author>Todd</author><pubDate>Thu, 29 Mar 2012 14:45:00 GMT</pubDate><guid>http://www.blogjava.net/Todd/archive/2012/03/29/373010.html</guid><wfw:comment>http://www.blogjava.net/Todd/comments/373010.html</wfw:comment><comments>http://www.blogjava.net/Todd/archive/2012/03/29/373010.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Todd/comments/commentRss/373010.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Todd/services/trackbacks/373010.html</trackback:ping><description><![CDATA[1.下载：<a href="http://www.netperf.org/netperf/DownloadNetperf.html">http://www.netperf.org/netperf/DownloadNetperf.html</a>
<br />2.安装，netperf-2.5.0.tar.gz；解压后执行一下命令：<br />cd&nbsp;netperf-2.5.0<div>./configure<br />make &amp;&amp; make install<br />默认安装目录：/usr/local/bin<br />有两个文件 netperf netserver<br />后者服务端（在要测试的机器上也要安装，并执行netserver启动之，否则客户端报错） &nbsp;前者客户端<br />3.测试--直接转别人的<br /></div><br /><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; "><a name="N100B4"><span style="font-size: 1.2em; font-weight: bold; ">TCP网络性能</span></a></p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">由于TCP协议能够提供端到端的可靠传输，因此被大量的网络应用程序使用。但是，可靠性的建立是要付出代价的。TCP协议保证可靠性的措施，如建立并维护连接、控制数据有序的传递等都会消耗一定的网络带宽。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">Netperf可以模拟三种不同的TCP流量模式：</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">1）	单个TCP连接，批量（bulk）传输大量数据</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">2）	单个TCP连接，client请求/server应答的交易（transaction）方式</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">3）	多个TCP连接，每个连接中一对请求/应答的交易方式</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; "><a name="N100C9"><span style="font-size: 1.2em; font-weight: bold; ">UDP网络性能</span></a></p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">UDP没有建立连接的负担，但是UDP不能保证传输的可靠性，所以使用UDP的应用程序需要自行跟踪每个发出的分组，并重发丢失的分组。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">Netperf可以模拟两种UDP的流量模式：</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">1）	从client到server的单向批量传输</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">2）	请求/应答的交易方式</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">由于UDP传输的不可靠性，在使用netperf时要确保发送的缓冲区大小不大于接收缓冲区大小，否则数据会丢失，netperf将给出错误的结果。因此，对于接收到分组的统计不一定准确，需要结合发送分组的统计综合得出结论。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; "><a name="N100DE"><span style="font-size: 1.2em; font-weight: bold; ">Netperf的命令行参数</span></a></p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">在unix系统中，可以直接运行可执行程序来启动netserver，也可以让inetd或xinetd来自动启动netserver。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">当netserver在server端启动以后，就可以在client端运行netperf来测试网络的性能。netperf通过命令行参数来控制测试的类型和具体的测试选项。根据作用范围的不同，netperf的命令行参数可以分为两大类：全局命令行参数、测试相关的局部参数，两者之间使用--分隔：</p><table width="100%" cellpadding="0" cellspacing="0" border="0" style="font-size: 0.8em; color: #000000; font-family: Simsun; text-align: left; "><tbody><tr><td style="font-family: arial, nsimsun, sans-serif; background-color: #f7f7f7 !important; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; "><pre style="width: 694px; margin-top: 0px; margin-bottom: 0px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; font-size: 11px; overflow-x: auto; overflow-y: auto; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; ">netperf [global options]-- [test-specific options] </pre></td></tr></tbody></table><br style="font-family: Simsun; text-align: left; font-size: medium; " /><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">这里我们只解释那些常用的命令行参数，其它的参数读者可以查询netperf的man手册。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">-H host ：指定远端运行netserver的server IP地址。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">-l testlen：指定测试的时间长度（秒）</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">-t testname：指定进行的测试类型，包括TCP_STREAM，UDP_STREAM，TCP_RR，TCP_CRR，UDP_RR，在下文中分别对它们说明。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">在后面的测试中，netserver运行在192.168.0.28，server与client通过局域网连接（100M Hub）。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; "><a name="N100FD"><span style="font-size: 1.2em; font-weight: bold; ">Netperf测试网络性能</span></a></p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; "><strong>测试批量（bulk）网络流量的性能</strong></p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">批量数据传输典型的例子有ftp和其它类似的网络应用（即一次传输整个文件）。根据使用传输协议的不同，批量数据传输又分为TCP批量传输和UDP批量传输。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">1．	TCP_STREAM</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">Netperf缺省情况下进行TCP批量传输，即-t TCP_STREAM。测试过程中，netperf向netserver发送批量的TCP数据分组，以确定数据传输过程中的吞吐量：</p><table width="100%" cellpadding="0" cellspacing="0" border="0" style="font-size: 0.8em; color: #000000; font-family: Simsun; text-align: left; "><tbody><tr><td style="font-family: arial, nsimsun, sans-serif; background-color: #f7f7f7 !important; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; "><pre style="width: 694px; margin-top: 0px; margin-bottom: 0px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; font-size: 11px; overflow-x: auto; overflow-y: auto; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; "> ./netperf -H 192.168.0.28 -l 60 TCP STREAM TEST to 192.168.0.28 Recv   Send    Send Socket Socket  Message  Elapsed Size   Size    Size     Time     Throughput bytes  bytes   bytes    secs.    10^6bits/sec    87380  16384  16384    60.00      88.00  </pre></td></tr></tbody></table><br style="font-family: Simsun; text-align: left; font-size: medium; " /><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">从netperf的结果输出中，我们可以知道以下的一些信息：</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">1）	远端系统（即server）使用大小为87380字节的socket接收缓冲</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">2）	本地系统（即client）使用大小为16384字节的socket发送缓冲</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">3）	向远端系统发送的测试分组大小为16384字节</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">4）	测试经历的时间为60秒</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">5）	吞吐量的测试结果为88Mbits/秒</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">在缺省情况下，netperf向发送的测试分组大小设置为本地系统所使用的socket发送缓冲大小。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">TCP_STREAM方式下与测试相关的局部参数如下表所示：</p><table border="1" width="70%" style="font-size: 0.8em; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-top-width: 0px; border-top-style: initial; border-top-color: initial; width: 708px; color: #000000; font-family: Simsun; text-align: left; "><tbody><tr><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">参数</td><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">说明</td></tr><tr><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">-s size</td><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">设置本地系统的socket发送与接收缓冲大小</td></tr><tr><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">-S size</td><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">设置远端系统的socket发送与接收缓冲大小</td></tr><tr><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">-m size</td><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">设置本地系统发送测试分组的大小</td></tr><tr><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">-M size</td><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">设置远端系统接收测试分组的大小</td></tr><tr><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">-D</td><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">对本地与远端系统的socket设置TCP_NODELAY选项</td></tr></tbody></table><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">通过修改以上的参数，并观察结果的变化，我们可以确定是什么因素影响了连接的吞吐量。例如，如果怀疑路由器由于缺乏足够的缓冲区空间，使得转发大的分组时存在问题，就可以增加测试分组（-m）的大小，以观察吞吐量的变化：</p><table width="100%" cellpadding="0" cellspacing="0" border="0" style="font-size: 0.8em; color: #000000; font-family: Simsun; text-align: left; "><tbody><tr><td style="font-family: arial, nsimsun, sans-serif; background-color: #f7f7f7 !important; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; "><pre style="width: 694px; margin-top: 0px; margin-bottom: 0px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; font-size: 11px; overflow-x: auto; overflow-y: auto; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; "> ./netperf -H 192.168.0.28 -l 60 -- -m 2048 TCP STREAM TEST to 192.168.0.28 Recv   Send    Send Socket Socket  Message  Elapsed Size   Size    Size     Time     Throughput bytes  bytes   bytes    secs.    10^6bits/sec    87380  16384   2048    60.00      87.62  </pre></td></tr></tbody></table><br style="font-family: Simsun; text-align: left; font-size: medium; " /><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">在这里，测试分组的大小减少到2048字节，而吞吐量却没有很大的变化（与前面例子中测试分组大小为16K字节相比）。相反，如果吞吐量有了较大的提升，则说明在网络中间的路由器确实存在缓冲区的问题。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">2．	UDP_STREAM</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">UDP_STREAM用来测试进行UDP批量传输时的网络性能。需要特别注意的是，此时测试分组的大小不得大于socket的发送与接收缓冲大小，否则netperf会报出错提示：</p><table width="100%" cellpadding="0" cellspacing="0" border="0" style="font-size: 0.8em; color: #000000; font-family: Simsun; text-align: left; "><tbody><tr><td style="font-family: arial, nsimsun, sans-serif; background-color: #f7f7f7 !important; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; "><pre style="width: 694px; margin-top: 0px; margin-bottom: 0px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; font-size: 11px; overflow-x: auto; overflow-y: auto; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; ">./netperf -t UDP_STREAM -H 192.168.0.28 -l 60 UDP UNIDIRECTIONAL SEND TEST to 192.168.0.28 udp_send: data send error: Message too long </pre></td></tr></tbody></table><br style="font-family: Simsun; text-align: left; font-size: medium; " /><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">为了避免这样的情况，可以通过命令行参数限定测试分组的大小，或者增加socket的发送/接收缓冲大小。UDP_STREAM方式使用与TCP_STREAM方式相同的局部命令行参数，因此，这里可以使用-m来修改测试中使用分组的大小：</p><table width="100%" cellpadding="0" cellspacing="0" border="0" style="font-size: 0.8em; color: #000000; font-family: Simsun; text-align: left; "><tbody><tr><td style="font-family: arial, nsimsun, sans-serif; background-color: #f7f7f7 !important; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; "><pre style="width: 694px; margin-top: 0px; margin-bottom: 0px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; font-size: 11px; overflow-x: auto; overflow-y: auto; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; "> ./netperf -t UDP_STREAM -H 192.168.0.28 -- -m 1024 UDP UNIDIRECTIONAL SEND TEST to 192.168.0.28 Socket  Message  Elapsed      Messages Size    Size     Time         Okay Errors   Throughput bytes   bytes    secs            #      #   10^6bits/sec    65535    1024   9.99       114127      0      93.55  65535           9.99       114122             93.54  </pre></td></tr></tbody></table><br style="font-family: Simsun; text-align: left; font-size: medium; " /><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">UDP_STREAM方式的结果中有两行测试数据，第一行显示的是本地系统的发送统计，这里的吞吐量表示netperf向本地socket发送分组的能力。但是，我们知道，UDP是不可靠的传输协议，发送出去的分组数量不一定等于接收到的分组数量。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">第二行显示的就是远端系统接收的情况，由于client与server直接连接在一起，而且网络中没有其它的流量，所以本地系统发送过去的分组几乎都被远端系统正确的接收了，远端系统的吞吐量也几乎等于本地系统的发送吞吐量。但是，在实际环境中，一般远端系统的socket缓冲大小不同于本地系统的socket缓冲区大小，而且由于UDP协议的不可靠性，远端系统的接收吞吐量要远远小于发送出去的吞吐量。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; "><strong>测试请求/应答（request/response）网络流量的性能</strong></p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">另一类常见的网络流量类型是应用在client/server结构中的request/response模式。在每次交易（transaction）中，client向server发出小的查询分组，server接收到请求，经处理后返回大的结果数据。如下图所示：</p><br style="font-family: Simsun; text-align: left; font-size: medium; " /><img alt="" border="0" height="208" src="http://www.ibm.com/developerworks/cn/linux/l-netperf/images/image002.gif" width="283" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: Simsun; text-align: left; font-size: medium; " />&nbsp;<br style="font-family: Simsun; text-align: left; font-size: medium; " /><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">1．	TCP_RR</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">TCP_RR方式的测试对象是多次TCP request和response的交易过程，但是它们发生在同一个TCP连接中，这种模式常常出现在数据库应用中。数据库的client程序与server程序建立一个TCP连接以后，就在这个连接中传送数据库的多次交易过程。</p><table width="100%" cellpadding="0" cellspacing="0" border="0" style="font-size: 0.8em; color: #000000; font-family: Simsun; text-align: left; "><tbody><tr><td style="font-family: arial, nsimsun, sans-serif; background-color: #f7f7f7 !important; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; "><pre style="width: 694px; margin-top: 0px; margin-bottom: 0px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; font-size: 11px; overflow-x: auto; overflow-y: auto; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; ">./netperf -t TCP_RR -H 192.168.0.28 TCP REQUEST/RESPONSE TEST to 192.168.0.28 Local /Remote Socket Size   Request  Resp.   Elapsed  Trans. Send   Recv   Size     Size    Time     Rate bytes  Bytes  bytes    bytes   secs.    per sec   16384  87380  1        1       10.00    9502.73 16384  87380 </pre></td></tr></tbody></table><br style="font-family: Simsun; text-align: left; font-size: medium; " /><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">Netperf输出的结果也是由两行组成。第一行显示本地系统的情况，第二行显示的是远端系统的信息。平均的交易率（transaction rate）为9502.73次/秒。注意到这里每次交易中的request和response分组的大小都为1个字节，不具有很大的实际意义。用户可以通过测试相关的参数来改变request和response分组的大小，TCP_RR方式下的参数如下表所示：</p><table border="1" width="70%" style="font-size: 0.8em; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-top-width: 0px; border-top-style: initial; border-top-color: initial; width: 708px; color: #000000; font-family: Simsun; text-align: left; "><tbody><tr><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">参数</td><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">说明</td></tr><tr><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">-r req,resp</td><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">设置request和reponse分组的大小</td></tr><tr><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">-s size</td><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">设置本地系统的socket发送与接收缓冲大小</td></tr><tr><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">-S size</td><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">设置远端系统的socket发送与接收缓冲大小</td></tr><tr><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">-D</td><td style="font-family: arial, nsimsun, sans-serif; border-top-color: #cccccc; border-top-style: solid; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; ">对本地与远端系统的socket设置TCP_NODELAY选项</td></tr></tbody></table><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">通过使用-r参数，我们可以进行更有实际意义的测试：</p><table width="100%" cellpadding="0" cellspacing="0" border="0" style="font-size: 0.8em; color: #000000; font-family: Simsun; text-align: left; "><tbody><tr><td style="font-family: arial, nsimsun, sans-serif; background-color: #f7f7f7 !important; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; "><pre style="width: 694px; margin-top: 0px; margin-bottom: 0px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; font-size: 11px; overflow-x: auto; overflow-y: auto; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; ">./netperf -t TCP_RR -H 192.168.0.28 -- -r 32,1024 TCP REQUEST/RESPONSE TEST to 192.168.0.28 Local /Remote Socket Size   Request  Resp.   Elapsed  Trans. Send   Recv   Size     Size    Time     Rate bytes  Bytes  bytes    bytes   secs.    per sec   16384  87380  32       1024    10.00    4945.97 16384  87380 </pre></td></tr></tbody></table><br style="font-family: Simsun; text-align: left; font-size: medium; " /><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">从结果中可以看出，由于request/reponse分组的大小增加了，导致了交易率明显的下降。 注：相对于实际的系统，这里交易率的计算没有充分考虑到交易过程中的应用程序处理时延，因此结果往往会高于实际情况。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">2．	TCP_CRR</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">与TCP_RR不同，TCP_CRR为每次交易建立一个新的TCP连接。最典型的应用就是HTTP，每次HTTP交易是在一条单独的TCP连接中进行的。因此，由于需要不停地建立新的TCP连接，并且在交易结束后拆除TCP连接，交易率一定会受到很大的影响。</p><table width="100%" cellpadding="0" cellspacing="0" border="0" style="font-size: 0.8em; color: #000000; font-family: Simsun; text-align: left; "><tbody><tr><td style="font-family: arial, nsimsun, sans-serif; background-color: #f7f7f7 !important; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; "><pre style="width: 694px; margin-top: 0px; margin-bottom: 0px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; font-size: 11px; overflow-x: auto; overflow-y: auto; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; ">./netperf -t TCP_CRR -H 192.168.0.28  TCP Connect/Request/Response TEST to 192.168.0.28 Local /Remote Socket Size   Request  Resp.   Elapsed  Trans. Send   Recv   Size     Size    Time     Rate bytes  Bytes  bytes    bytes   secs.    per sec   131070 131070 1        1       9.99     2662.20 16384  87380 </pre></td></tr></tbody></table><br style="font-family: Simsun; text-align: left; font-size: medium; " /><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">即使是使用一个字节的request/response分组，交易率也明显的降低了，只有2662.20次/秒。TCP_CRR使用与TCP_RR相同的局部参数。</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">3．	UDP_RR</p><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">UDP_RR方式使用UDP分组进行request/response的交易过程。由于没有TCP连接所带来的负担，所以我们推测交易率一定会有相应的提升。</p><table width="100%" cellpadding="0" cellspacing="0" border="0" style="font-size: 0.8em; color: #000000; font-family: Simsun; text-align: left; "><tbody><tr><td style="font-family: arial, nsimsun, sans-serif; background-color: #f7f7f7 !important; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; "><pre style="width: 694px; margin-top: 0px; margin-bottom: 0px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; font-size: 11px; overflow-x: auto; overflow-y: auto; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; ">./netperf -t UDP_RR -H 192.168.0.28  UDP REQUEST/RESPONSE TEST to 192.168.0.28 Local /Remote Socket Size   Request  Resp.   Elapsed  Trans. Send   Recv   Size     Size    Time     Rate bytes  Bytes  bytes    bytes   secs.    per sec   65535  65535  1        1       9.99     10141.16 65535  65535 </pre></td></tr></tbody></table><br style="font-family: Simsun; text-align: left; font-size: medium; " /><p style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; text-align: left; ">结果证实了我们的推测，交易率为10141.16次/秒，高过TCP_RR的数值。不过，如果出现了相反的结果，即交易率反而降低了，也不需要担心，因为这说明了在网络中，路由器或其它的网络设备对UDP采用了与TCP不同的缓冲区空间和处理技术。</p><div style="clear: both; background-image: url(http://1.www.s81c.com/i/solid.gif); background-attachment: initial; background-origin: initial; background-clip: initial; height: 1px; font-family: Simsun; text-align: left; font-size: medium; background-repeat: repeat no-repeat; "></div><a href="http://www.ibm.com/developerworks/cn/linux/l-netperf/">http://www.ibm.com/developerworks/cn/linux/l-netperf/<br /></a><img src ="http://www.blogjava.net/Todd/aggbug/373010.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Todd/" target="_blank">Todd</a> 2012-03-29 22:45 <a href="http://www.blogjava.net/Todd/archive/2012/03/29/373010.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【1】freebsd  安装，环境，资料</title><link>http://www.blogjava.net/Todd/archive/2012/02/09/369634.html</link><dc:creator>Todd</dc:creator><author>Todd</author><pubDate>Wed, 08 Feb 2012 17:26:00 GMT</pubDate><guid>http://www.blogjava.net/Todd/archive/2012/02/09/369634.html</guid><wfw:comment>http://www.blogjava.net/Todd/comments/369634.html</wfw:comment><comments>http://www.blogjava.net/Todd/archive/2012/02/09/369634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Todd/comments/commentRss/369634.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Todd/services/trackbacks/369634.html</trackback:ping><description><![CDATA[<div>1.中文使用手册 必备<br /><a href="http://www.freebsd.org/doc/zh_CN/books/handbook/index.html">http://www.freebsd.org/doc/zh_CN/books/handbook/index.html</a><br />开发手册<br /><a href="http://www.freebsd.org/doc/en/books/developers-handbook/index.html">http://www.freebsd.org/doc/en/books/developers-handbook/index.html</a><br />2.系统安装<br />系统安装包FreeBSD-8.2-RELEASE-i386-disc1.iso 地址：<br /><a href="ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.2/">ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.2/</a><br />或者使用网易的镜像地址下载：<br /><a href="http://mirrors.163.com/FreeBSD/ISO-IMAGES-i386/8.2/">http://mirrors.163.com/FreeBSD/ISO-IMAGES-i386/8.2/</a><br />使用虚拟光驱加载iso文件，在vm中加载安装<br />安装步骤参见《手册》地址：<br /><a href="http://www.freebsd.org/doc/zh_CN/books/handbook/using-sysinstall.html">http://www.freebsd.org/doc/zh_CN/books/handbook/using-sysinstall.html</a><br />我使用标准安装，安装步骤很详细，若要ssh,标准安装中带ssh,检查下rc.conf中<pre class="SCREEN">sshd_enable="YES"
</pre><br />gcc也是自带装好的，可以hello验证下<br />#include &lt;stdio.h&gt;<br />int main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("hello,todd^^\n");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br />}<br />&gt;gcc hello.c -o hello<br />&gt;./hello<br />&gt;hello,todd^^<br />欧了<br /><br /><br /><br /><br /></div><img src ="http://www.blogjava.net/Todd/aggbug/369634.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Todd/" target="_blank">Todd</a> 2012-02-09 01:26 <a href="http://www.blogjava.net/Todd/archive/2012/02/09/369634.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>