“wxsrose”通过精心收集,向本站投稿了4篇编写SVG布置画布和坐标系统以及视窗的方法,下面是小编整理后的编写SVG布置画布和坐标系统以及视窗的方法,欢迎您能喜欢,也请多多分享。

篇1:编写SVG布置画布和坐标系统以及视窗的方法
这篇文章主要介绍了编写SVG布置画布和坐标系统以及视窗的方法,SVG是利用XML语言来编写的矢量图格式,需要的朋友可以参考下
比喻
想象一个无穷大的画布,你可以在画布上的任何地方绘制你想要的任何内容,你也可以以任何你想要的尺寸来绘制,这就是SVG画布。
现在接着想象,有人在你的画布正前方建立了一堵同样的无穷大的墙,墙的宽度和高度也是无限延伸的,把画布全都挡住了。
因为墙都是直接放在画布前面的,所以我们无法看到画布上的内容。但是建墙的人很好,帮我们开了一扇窗户,甚至还给了我们设置这扇窗户大小尺寸的能力。这扇窗户就是SVG视窗。
墙的筑造者并没有在这里停住。他还给我们留下了工具,我们可以用它来移动画布,决定要将画布的哪部分显示在窗口区域,还可以决定要显示的区域的大小。这些工具在SVG元素中是以属性的形式(viewBox和preserveAspectRatio)表现出来的。
我会在接下来的两周讲解这些属性。今天我想将内容集中在画布、墙、视窗上,先从它们使用的坐标系统讲起:
SVG坐标系统
虽然SVG和CSS盒模型的表现形式不一样,但是它们的坐标系统的工作方式是相同的。
所有SVG坐标系的起点(0,0)都是在父元素的左上角,它们的父元素可以是body元素、div元素、或其它的容器。
当你创建了一个新的SVG元素,你也就创建了一个新的坐标系统,即无穷大的SVG画布。起点可能是和父元素的左上角对齐,但是画布在所有方向无限延伸的。x轴的正方向是向右,y轴的正方向是向下。两个坐标轴的负方向也会向左边和上边延伸。
关于SVG有一点需要明白的就是多坐标系统的同时使用。每次你创建一个新的SVG元素,就相当于在它的坐标空间创建了一个新的画布,同时也创建了一个视窗。
每一对画布和视窗的坐标系统都是默认对齐的。它们看起来就像是在同一个系统内,但其实并不是。正如我们接下来要看的,你可以改变它们相互对齐的方式。
在实际中,你在无穷大的画布上创建的元素是放置在画布的原点附近的,但是理论上,它们是可以放在任何地方的。你可以创建一个圆,然后把它放在原点右边四十亿像素远的地方,没人阻止你这样做。
理论上,窗口也可以是接近无穷大的,你可以设置你想要的任何尺寸。但是,你只有固定了窗口的尺寸,它才可以是固定大小的,而且你一旦设置了尺寸,坐标系统将会在空间上保持这个大小。
用户代理程序(即浏览器)会默认对齐这两个坐标系统的原点和坐标轴,但是你可以根据自己的需要改变这种对齐方式。
这两个系统可以设置不同的单位。可以把一个设置为像素,另一个设置为毫米、picas、英寸、点、ems,或者其他任何你想要的单位。百分比%是例外,它不能在这里使用。
再次记住,这两个坐标系统,一个是作用在无穷大的画布上的,另一个是作用于固定窗口的。
SVG视窗
每次你创建了一个新的SVG元素,你也就创建了一个新的SVG视窗。视窗的大小等于你为SVG元素设置的宽度和高度。
CSS Code复制内容到剪贴板
这里,我创建了一个600px宽,300px高的视窗。在视窗内我创建了一个200x100px的红色矩形。因为我没有指定单位,所以默认情况下会使用像素作为单位。因为这和我平时的设置是一样的,所以我倾向于不要指定单位,这样也比较快捷。
为了能够看到视窗的边界,我还为
你可以看到一个5px粗的棕色边框包围着一块宽为600px、高为300px的区域,边框内的内容就是视窗。
视窗内独立出来一个宽为200px、高为100px的红色矩形。默认情况下矩形的左上角是放在SVG画布的原点,和视窗的原点对齐。
我有个问题是,如果你没有为视窗设置宽和高,它的尺寸应该是怎样的呢?我没有找到明确的答案。这是由每个用户代理程序(浏览器)决定的,但是好像一般默认是300px和150px。但是,我不建议是视窗按照默认的尺寸显示,最好还是按你自己的需要来设置尺寸吧。
移动画布上的SVG元素
你可以通过给矩形设置x值和y值,改变它在SVG画布上的位置。这里我把x值和y值都设置为10px,你可以看到矩形离开了视窗左上角的位置。
XML/HTML Code复制内容到剪贴板
用这种方法改变x和y坐标的值,就相当于移动了SVG画布上绘制的对象。画布本身没有移动,视窗也没有移动。我只是在画布上的另一个位置绘制了一个同样的红色矩形。
你也可以画一个部分超出了视窗边界的矩形。
XML/HTML Code复制内容到剪贴板
在这里你可以看到,矩形的大部分都变成不可见的了,只有小部分仍然可以在窗口中看到。其实我只是把它移动了几个像素,所以理论上你可以在这个无穷大的画布上的任何你喜欢的位置绘制矩形。
看到视窗外面的内容
有一个东西我不常见人提到的是:为什么我们看不到视窗之外的内容。因为SVG元素有一个默认值为hidden的overflow属性,所以任何超出视窗的内容都会被隐藏。
当然,overflow属性也可以设置为其它值,比如visible。
XML/HTML Code复制内容到剪贴板
把overflow属性的值改为visible,你可以看到SVG画布上超出视窗的那几部分内容,包括画布上那部分能出现在你屏幕上的内容(你的浏览器创建的另一个视窗)。
现在你可以看到整个红色矩形了,包括超出视窗边界的部分。在使用SVG工作的时候你一般不会这么做,现在这只是一个帮助你理解到底发生了什么东西的方式。
建立一个新的视窗
前面我说过有SVG是多个坐标系是同时作用的。最简单的情况下,也有一个用于画布,一个用于视窗的坐标系。我也提到了你可以创建新的画布,并建立新的窗口。
每次你新建SVG元素,即使是嵌套在另一个SVG元素内,你会用它自己的坐标系统创建新的画布及视窗。只有较少数元素会创建新的画布和视窗:
实例化
引入SVG文件的元素
元素
因为我们还没有开始讨论这些元素(除了SVG元素),我现在只是把它们罗列出来。我现在主要是想强调在同一个HTML文件中创建多个SVG画布和视窗。
篇2:利用SVG技术开发WebGIS系统的方法
利用SVG技术开发WebGIS系统的方法
从可缩放矢量图形(Scalable Vector Graphics,SVG)标准技术入手,利用SVG的开发原理,结合WebGIS系统的功能要求和解决思路,运用Asp.net、脚本语言JavaScript和DOM技术,实现WebGIS的基本功能.提出了将制图数据转换成SVG图形,并在Web发布SVG地图的.技术路线,解决了海量地理空间信息在Internet网络传输速度低、GIS软件平台发布地图时地图数据格式必须为空间数据格式的限制、空间数据发布时数据的安全性等相关技术难点,并在实例中予以应用验证.
作 者:雷瑛 胡晓娟 LEI Ying HU Xiao-juan 作者单位:甘肃省基础地理信息中心,甘肃,兰州730000 刊 名:遥感技术与应用 ISTIC PKU英文刊名:REMOTE SENSING TECHNOLOGY AND APPLICATION 年,卷(期): 24(5) 分类号:P208 关键词:SVG WebGIS Scalable Vector Graphics Technology WebGIS
篇3:循环式生活热水系统管道布置方法如何?
循环式生活热水系统管道布置方法如何?
循环式热水系统管道布置可分为下行上给式及上行下给式,
图2--98为一下行上给式热水系统,供热水管和回水管均布置在地沟内(或首层吊顶内),用水点从各立管上接出,供水干管应设不小于3‰的逆坡,系统内空气平时可随用水点用水而排出,干管可不单独设置放气阀。
2---98
为了保证配水压力稳定,一般采用由高位水箱的水供给加热器使用,即将自来水首先接入水箱内,然后在从水箱下部接管至换热器被加热水入口处,
因在系统内敷设回水管系统,当系统用水量减少或停止使用时,其热水会通过热水循环泵不断循环,以保持管道内水温要求。
当干管、立支管处均设置回水管时称为全循环系统;当只在干管处设回水管而立支管不设回水管时称为局部循环系统。
下行上给式布置时,回水立管应低于供水立管最顶端用水点约50处与供水立管连接,避免回水立管的顶端形成气塞而影响热水的循环,确保系统内的空气从顶部用水点排出。
图2---99为上行下给式热水供应系统甲供热水干管多敷设在建筑物顶层吊顶内或顶棚下,回水管可设置在地沟内,主干管应设有不小于3‰的逆坡,供热水干管的最高点处设自动排气阀,回水管接在供热水管立管末端即可。
2--99
高层建筑热水供应系统为了减少静水压力对建筑物底层用水点水压过大,宜采用按楼层分区供水方式。
篇4:编写Bash Shell通过gnuplot绘制系统性能数据图的方法
这篇文章主要介绍了编写Bash Shell通过gnuplot绘制系统性能数据图的方法,做到可视化数据收集,需要的朋友可以参考下
使用步骤:
1.设置一个定时任何 执行getperf.sh,采集性能数据
2.将采集到性能数据文件,如:192.168.1.1.tar.gz 解压
3.将性能分析的脚步performance_analyse.sh 放到解压后的目录中
4.安装gnuplot程序(这里下载)
5.将字体文件夹,拷贝到/usr/share/fonts/目录
6.直接运行 bash performance_analyse.sh
getperf.sh脚本内容如下:
##################################################说明:# 定义时间TIMES参数,表示采集的次数,# 采集时间 = TIMES * INTERVAL#eg:# TIMES=180 , INTERVAL=10 采集时间就是半小时###################################################!/bin/bashTIMES=3600INTERVAL=2PWD=`pwd`TIME=`date “+%F %H:%M:%S”`TAR=`whereis tar|awk -F “:” ‘{print $2}‘|awk ‘{print $1}‘`SAR=`whereis sar|awk -F “:” ‘{print $2}‘|awk ‘{print $1}‘`IOSTAT=`whereis iostat|awk -F “:” ‘{print $2}‘|awk ‘{print $1}‘`# Check Moniter ToolSysInfo(){ echo “sysip : $SYSIP”|tee $PWD/$SYSIP/sysinfo echo “starttime : $TIME” |tee -a $PWD/$SYSIP/sysinfo /sbin/ifconfig >>$PWD/$SYSIP/sysinfo echo “===================================” >>$PWD/$SYSIP/sysinfo /usr/sbin/dmidecode >>$PWD/$SYSIP/sysinfo echo “===================================” >>$PWD/$SYSIP/sysinfo /bin/cat /proc/cpuinfo >>$PWD/$SYSIP/sysinfo echo “===================================” >>$PWD/$SYSIP/sysinfo /sbin/fdisk -l >>$PWD/$SYSIP/sysinfo echo “===================================” >>$PWD/$SYSIP/sysinfo /bin/df -Th >>$PWD/$SYSIP/sysinfo echo “===================================” >>$PWD/$SYSIP/sysinfo /usr/bin/free -m >>$PWD/$SYSIP/sysinfo echo “===================================” >>$PWD/$SYSIP/sysinfo echo “”}CheckEnv(){ PUB_IP=`/sbin/ifconfig |grep “inet addr” | awk -F: ‘{print $2}‘| awk ‘{print $1}‘|grep -v “172\.\|10\.\|127\.\|192\.”|sed -n 1p` PRI_IP=`/sbin/ifconfig |grep “inet addr” | awk -F: ‘{print $2}‘| awk ‘{print $1}‘|grep “10\.\|127\.\|192\.”|sed -n 1p` if [ “snda$PUB_IP” == “snda” ];then SYSIP=$PRI_IP else SYSIP=$PUB_IP fi if [ -d $PWD/$SYSIP ];then rm -rf $PWD/$SYSIP fi mkdir -p $PWD/$SYSIP if ! grep iostat /usr/bin/iostat ;then yum -y install sysstat fi}GetPerf(){ CPUUSAGE=“$PWD/$SYSIP/cpuusage.log” MEMUSAGE=“$PWD/$SYSIP/memusage.log” DISKUSAGE=“$PWD/$SYSIP/diskusage.log” NETWORK=“$PWD/$SYSIP/network.log” $SAR -P ALL $INTERVAL $TIMES>>$CPUUSAGE & $IOSTAT -dkx $INTERVAL $TIMES>>$DISKUSAGE & $SAR -n DEV $INTERVAL $TIMES>>$NETWORK & $SAR -r $INTERVAL $TIMES>>$MEMUSAGE & for ((i=0;i<$TIMES;i++)) do sleep $INTERVAL done}CheckEnvSysInfoGetPerf#在同一台机器上第二次采集数据时,会删除之前采集的数据,重新采集#采集完成之后,会生产一个以 IP.tar.gz的压缩包,
编写Bash Shell通过gnuplot绘制系统性能数据图的方法
。将这个压缩包,放到#分析脚本performance_analyse.sh 的同级目录。if [ -d $PWD/$SYSIP ];then cd $PWD rm -f $SYSIP.tar.gz tar zcvf $SYSIP.tar.gz $SYSIPfi
performance_analyse.sh脚本内容如下:
################################################### 这个脚本的作用是处理由性能采集脚本收集到的性能数据#然后使用gunplot生产直观的性能图。###################################################!/bin/bashSysInfo(){ local file=$1 local productname=“unknow” local cpumodel=“unknow” local cpucore=“unknow” local cpumhz=“unknow” local physical=“unknow” local realcpucore=“unknow” local diskpart=“unknow” local memory=“unknow” ipaddr=`cat $file |grep -i “net addr”|grep -v “127”` productname=`cat $file |grep -i “product name”` cpumodel=`cat $file |grep -i “model name”|uniq -d` cpucore=`cat $file |grep “processor”|wc -l` cpumhz=`cat $file |grep -i “cpu MHz”|uniq -d` physical=`cat $file |grep -i “physical id”|sort -n|uniq -d|wc -l` realcpucore=`cat $file |grep -i “cpu cores”|uniq -d|awk -F “:” ‘{print $2}‘` memory=` cat $file |grep -i -EB1 “mem:”` diskpart=`cat $file |grep -i “disk”|grep -E “[shv][d][a-z]”` echo “System Information:”|tee -a $REPORTFILE echo “IP address:”|tee -a $REPORTFILE echo -e “$ipaddr”|tee -a $REPORTFILE echo “$productname” |tee -a $REPORTFILE echo -e “\t$cpumodel” |tee -a $REPORTFILE echo -e “\tCPU cores\t:$cpucore”|tee -a $REPORTFILE echo -e “\t$cpumhz”|tee -a $REPORTFILE echo -e “\tPhysical cpu number:$physical”|tee -a $REPORTFILE echo -e “\tEach CPU real core:$realcpucore”|tee -a $REPORTFILE echo “$diskpart”|tee -a $REPORTFILE echo -e “Memory(MB):\n$memory”|tee -a $REPORTFILE}CpuAllUsage(){ local file=$1 cat $file|grep -i “all”|grep -v -i -E “average|linux|system” >$GNUPLOTFOLDER/sar_cpu.$$ TITLE=`cat $file |sed “/^$/d”|grep -v -i “average|linux”|sed 1d|sed -n 1p` local SOURCE_SAR_CPU=“$GNUPLOTFOLDER/sar_cpu.$$” local USER_UASGE=`echo $TITLE |awk ‘{print $3}‘` local NICE_UASGE=`echo $TITLE |awk ‘{print $4}‘` local SYSTEM_UASGE=`echo $TITLE |awk ‘{print $5}‘` local IOWAIT_UASGE=`echo $TITLE |awk ‘{print $6}‘` local STEAL_UASGE=`echo $TITLE |awk ‘{print $7}‘` local IDLE_UASGE=`echo $TITLE |awk ‘{print $8}‘` local cpuusagemax=`cat $SOURCE_SAR_CPU|awk ‘{print $3+$4+$5+$6+$7}‘|sort -r|sed -n 1p` local Tmp_ylable=`echo $cpuusagemax|awk -F “.” ‘{print $1}‘` local ylable=`echo $Tmp_ylable+5|bc` local cpuusagemin=`cat $SOURCE_SAR_CPU|awk ‘{print $3+$4+$5+$6+$7}‘|sort|sed -n 1p` local cpuusageavg=`awk ‘BEGIN{total=0}{total+=$8}END{print 100-total/NR}‘ $SOURCE_SAR_CPU` echo “`date ‘+%F %H:%M:%S‘`: CPU Performance analysis” |tee -a $REPORTFILE echo -e “\t1.System Cpu load(%) \tmax=$cpuusagemax,average=$cpuusageavg,mim=$cpuusagemin” |tee -a $REPORTFILE/usr/local/bin/gnuplot --persist <$GNUPLOTFOLDER/idle_sum.$$ for (( i=0;i<=$corenu;i++ )) do cat $file |grep -v -i -E “average|system|all|linux”|sed “/^$/d”|awk “(\$2==$i){print}”|awk ‘{print $1 ,“ ”,100-$8}‘>$GNUPLOTFOLDER/$i.txt local idlesum=`awk ‘BEGIN{total=0}{total+=$2}END{print total}‘ $GNUPLOTFOLDER/$i.txt` echo $i $idlesum >>$GNUPLOTFOLDER/idle_sum.$$ done first_load=`cat $GNUPLOTFOLDER/idle_sum.$$|sort -n -k 2 -r|sed -n 1p|awk ‘{print $1}‘` second_load=`cat $GNUPLOTFOLDER/idle_sum.$$|sort -n -k 2 -r|sed -n 2p|awk ‘{print $1}‘` third_load=`cat $GNUPLOTFOLDER/idle_sum.$$|sort -n -k 2 -r|sed -n 3p|awk ‘{print $1}‘` load=($first_load $second_load $third_load) echo -e “\t2.Each core load:” local cpuload=(“First” “Second” “Third”) local nu=0 for i in ${load[@]} do local coreloadmax=`cat $GNUPLOTFOLDER/$i.txt|sort -n -k 2 -r|sed -n 1p|awk ‘{print $2}‘` local coreloadavg=`awk ‘BEGIN{total=0}{total+=$2}END{print total/NR}‘ $GNUPLOTFOLDER/$i.txt` local coreloadmin=`cat $GNUPLOTFOLDER/$i.txt|sort -n -k 2|sed -n 1p|awk ‘{print $2}‘` echo -e “\t\t\t Load ${cpuload[$nu]} core $i : max=$coreloadmax , avg=$coreloadavg , min=$coreloadmin”|tee -a $REPORTFILE nu=`echo $nu+1|bc` done for ((i=0;i<=corenu;i++)) do if [ $i -eq $first_load ];thenLW=4 elif [ $i -eq $second_load ];thenLW=3 elif [ $i -eq $third_load ];thenLW=2 elseLW=1 fi TMP1=“$GNUPLOTFOLDER/$i.txt” TMP2=“using 1:2 with l lw $LW” TMP3=“core $i ” PLOT=“$PLOT \”$TMP1\“ $TMP2 title \”$TMP3\“,” done local tmp_ylabel_range=`cat $file|grep -v -i -E “average|system|all|linux”|sed “/^$/d”|awk ‘{print 100-$8}‘|sort -n -r|sed -n 1p|awk -F “.” ‘{print $1}‘|sed -n 1p` local ylabel_range=`echo $tmp_ylabel_range+5|bc`/usr/local/bin/gnuplot --persist <$GNUPLOTFOLDER/memory.$$ SOURCE_FILE=$GNUPLOTFOLDER/memory.$$ local memtotal=`awk ‘BEGIN{total=0}{total+=$3}END{print total/NR}‘ $SOURCE_FILE` local memusedmax=`awk ‘{print $4}‘ $SOURCE_FILE|sort -n -r|sed -n 1p` local memusedavg=`awk ‘BEGIN{total=0}{total+=$4}END{print total/NR}‘ $SOURCE_FILE` local memusedmin=`awk ‘{print $4}‘ $SOURCE_FILE|sort -n|sed -n 1p` local memfreemax=`awk ‘{print $2}‘ $SOURCE_FILE|sort -n -r|sed -n 1p` local memfreeavg=`awk ‘BEGIN{total=0}{total+=$2}END{print total/NR}‘ $SOURCE_FILE` local memfreemin=`awk ‘{print $2}‘ $SOURCE_FILE|sort -n|sed -n 1p` local memcachemax=`awk ‘{print $7}‘ $SOURCE_FILE|sort -n -r|sed -n 1p` local memcacheavg=`awk ‘BEGIN{total=0}{total+=$7}END{print total/NR}‘ $SOURCE_FILE` local memcachemin=`awk ‘{print $7}‘ $SOURCE_FILE|sort -n|sed -n 1p` local memused_cachemax=`awk ‘{print $4-$7}‘ $SOURCE_FILE|sort -n -r|sed -n 1p` local memused_cacheavg=`awk ‘BEGIN{total=0}{total+=($4-$7)}END{print total/NR}‘ $SOURCE_FILE` local memused_cachemin=`awk ‘{print $4-$7}‘ $SOURCE_FILE|sort -n|sed -n 1p` local used_percent=`awk ‘BEGIN{total=0}{total+=$5}END{print total/NR}‘ $SOURCE_FILE` echo “`date ‘+%F %H:%M:%S‘`: Memory usage analysis” |tee -a $REPORTFILE echo -e “\t\t1.total memory: $memtotal MB”|tee -a $REPORTFILE echo -e “\t\t2.memory used: max=$memusedmax MB ,avg=$memusedavg MB ,min=$memusedmin MB”|tee -a $REPORTFILE echo -e “\t\t3.memory free: max=$memfreemax MB ,avg=$memfreeavg MB ,min=$memfreemin MB”|tee -a $REPORTFILE echo -e “\t\t4.memory cache: max=$memcachemax MB ,avg=$memcacheavg MB ,min=$memcachemin MB”|tee -a $REPORTFILE echo -e “\t\t4.memory used-cache: max=$memused_cachemax MB ,avg=$memused_cacheavg MB ,min=$memused_cachemin MB”|tee -a $REPORTFILE/usr/local/bin/gnuplot --persist <$GNUPLOTFOLDER/disk.$$ local SOURCE_FILE=$GNUPLOTFOLDER/disk.$$ plot_readiops=“” plot_writeiops=“” local nu=1 echo “`date ‘+%F %H:%M:%S‘`: Disk Performance analysis” |tee -a $REPORTFILE for diskpart in `cat $file |sed ‘1,2d‘|grep -v -i “device”|awk -F “ ” ‘{print $1}‘|sort|uniq -d|sed ‘/^$/d‘|grep -E “^[a-z][a-z][a-z]$”` do awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE >$GNUPLOTFOLDER/gnu_tmpfile.$diskpart plot_readiops=“$plot_readiops \”$GNUPLOTFOLDER/gnu_tmpfile.$diskpart\“ using 4 w l title \”$diskpart read IOPS\“,” awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘BEGIN{total=0}{total+=$4}END{print total/NR}‘>$GNUPLOTFOLDER/t.$$ local read_avg_iops=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘{print $4}‘|sort -n|sed -n 1p>$GNUPLOTFOLDER/t.$$ local read_min_iops=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘{print $4}‘|sort -n -r |sed -n 1p>$GNUPLOTFOLDER/t.$$ local read_max_iops=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ plot_writeiops=“$plot_writeiops \”$GNUPLOTFOLDER/gnu_tmpfile.$diskpart\“ using 5 w l title \”$diskpart write IOPS\“,” awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘BEGIN{total=0}{total+=$5}END{print total/NR}‘>$GNUPLOTFOLDER/t.$$ local write_avg_iops=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘{print $5}‘|sort -n|sed -n 1p>$GNUPLOTFOLDER/t.$$ local write_min_iops=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘{print $5}‘|sort -n -r |sed -n 1p>$GNUPLOTFOLDER/t.$$ local write_max_iops=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘BEGIN{total=0}{total+=$6}END{print total/NR}‘>$GNUPLOTFOLDER/t.$$ local avg_read_throughput=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘{print $6}‘|sort -n|sed -n 1p>$GNUPLOTFOLDER/t.$$ local min_read_throughput=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘{print $6}‘|sort -n -r |sed -n 1p>$GNUPLOTFOLDER/t.$$ local max_read_throughput=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘BEGIN{total=0}{total+=$7}END{print total/NR}‘>$GNUPLOTFOLDER/t.$$ local avg_write_throughput=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘{print $7}‘|sort -n|sed -n 1p>$GNUPLOTFOLDER/t.$$ local min_write_throughput=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘{print $7}‘|sort -n -r |sed -n 1p>$GNUPLOTFOLDER/t.$$ local max_write_throughput=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘BEGIN{total=0}{total+=$10}END{print total/NR}‘>$GNUPLOTFOLDER/t.$$ local avg_await=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘{print $10}‘|sort -n|sed -n 1p>$GNUPLOTFOLDER/t.$$ local min_await=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ awk “(\$1==\”$diskpart\“){print}” $SOURCE_FILE|awk ‘{print $10}‘|sort -n -r |sed -n 1p>$GNUPLOTFOLDER/t.$$ local max_await=`cat $GNUPLOTFOLDER/t.$$` rm -f $GNUPLOTFOLDER/t.$$ echo -e “\t\t$nu.$diskpart performance:”|tee -a $REPORTFILE echo -e “\t\t\t read iops:\t\t max=$read_max_iops ,\t avg=$read_avg_iops ,\t min=$read_min_iops”|tee -a $REPORTFILE echo -e “\t\t\t write iops:\t\t max=$write_max_iops ,\t avg=$write_avg_iops ,\t min=$write_min_iops”|tee -a $REPORTFILE echo -e “\t\t\t read data per second:\t max=$max_read_throughput KB,\t avg=$avg_read_throughput KB,\t min=$min_read_throughput KB”|tee -a $REPORTFILE echo -e “\t\t\t write data per second:\t max=$max_write_throughput KB,\t avg=$avg_write_throughput KB,\t min=$min_write_throughput KB”|tee -a $REPORTFILE echo -e “\t\t\t each io wait time:\t max=$max_await ms ,\t avg=$avg_await ms ,\t min=$min_await ms”|tee -a $REPORTFILE done /usr/local/bin/gnuplot --persist <$GNUPLOTFOLDER/network_sourcefile.txt local sourcefile=$GNUPLOTFOLDER/network_sourcefile.txt local titlerxpackage=`cat $file |grep -i “IFACE”|awk ‘{print $3}‘|uniq -d` local titletxpackage=`cat $file |grep -i “IFACE”|awk ‘{print $4}‘|uniq -d` local titlerxbyte=`cat $file |grep -i “IFACE”|awk ‘{print $5}‘|uniq -d` local titletxbyte=`cat $file |grep -i “IFACE”|awk ‘{print $6}‘|uniq -d` if [ $titlerxbyte == ‘rxkB/s‘ ];thenunit=“KB” elif [ $titlerxbyte == ‘rxbyt/s‘ ];thenunit=“byte” fi local rxpackage=‘‘ local txpackage=‘‘ local rxbyte=‘‘ local txbyte=‘‘ local nu=1 echo “`date ‘+%F %H:%M:%S‘`: Network Performance analysis” |tee -a $REPORTFILE for netcard in `cat $file |grep -E “eth|em”|grep -v -i “average”|awk ‘{print $2}‘|sort|uniq -d` docat $sourcefile|grep $netcard>$GNUPLOTFOLDER/gnu_network.$netcardrxpackage=“$rxpackage \”$GNUPLOTFOLDER/gnu_network.$netcard\“ using 1:3 w l title \”$netcard $titlerxpackage\“,”txpackage=“$txpackage \”$GNUPLOTFOLDER/gnu_network.$netcard\“ using 1:4 w l title \”$netcard $titletxpackage\“,”rxbyte=“$rxbyte \”$GNUPLOTFOLDER/gnu_network.$netcard\“ using 1:5 w l title \”$netcard $titlerxbyte\“,”txbyte=“$txbyte \”$GNUPLOTFOLDER/gnu_network.$netcard\“ using 1:6 w l title \”$netcard $titletxbyte\“,”max_rxpck=` cat $GNUPLOTFOLDER/gnu_network.$netcard|sort -n -r -k 3|sed -n 1p|awk ‘{print $4}‘` avg_rxpck=`awk ‘BEGIN{total=0}{total+=$3}END{print total/NR}‘ $GNUPLOTFOLDER/gnu_network.$netcard`min_rxpck=` cat $GNUPLOTFOLDER/gnu_network.$netcard|sort -n -k 3|sed -n 1p|awk ‘{print $4}‘` max_txpck=` cat $GNUPLOTFOLDER/gnu_network.$netcard|sort -n -r -k 4|sed -n 1p|awk ‘{print $5}‘` avg_txpck=`awk ‘BEGIN{total=0}{total+=$4}END{print total/NR}‘ $GNUPLOTFOLDER/gnu_network.$netcard`min_txpck=` cat $GNUPLOTFOLDER/gnu_network.$netcard|sort -n -k 4|sed -n 1p|awk ‘{print $5}‘` max_rxbyt=` cat $GNUPLOTFOLDER/gnu_network.$netcard|sort -n -r -k 5|sed -n 1p|awk ‘{print $6}‘` avg_rxbyt=`awk ‘BEGIN{total=0}{total+=$5}END{print total/NR}‘ $GNUPLOTFOLDER/gnu_network.$netcard`min_rxbyt=` cat $GNUPLOTFOLDER/gnu_network.$netcard|sort -n -k 5|sed -n 1p|awk ‘{print $6}‘` max_txbyt=` cat $GNUPLOTFOLDER/gnu_network.$netcard|sort -n -r -k 6|sed -n 1p|awk ‘{print $7}‘` avg_txbyt=`awk ‘BEGIN{total=0}{total+=$6}END{print total/NR}‘ $GNUPLOTFOLDER/gnu_network.$netcard`min_txbyt=` cat $GNUPLOTFOLDER/gnu_network.$netcard|sort -n -k 6|sed -n 1p|awk ‘{print $7}‘` echo -e “\t\t$nu.$netcard load:”|tee -a $REPORTFILEecho -e “\t\t\t rxpck/s:\t\t max=$max_rxpck ,\t avg=$avg_rxpck ,\t min=$min_rxpck”|tee -a $REPORTFILEecho -e “\t\t\t txpck/s:\t\t max=$max_txpck ,\t avg=$avg_txpck ,\t min=$min_txpck”|tee -a $REPORTFILEecho -e “\t\t\t rxbyt/s:\t max=$max_rxbyt $unit,\t avg=$avg_rxbyt $unit,\t min=$min_rxbyt $unit”|tee -a $REPORTFILEecho -e “\t\t\t txbyt/s:\t max=$max_txbyt $unit,\t avg=$avg_txbyt $unit,\t min=$min_txbyt $unit”|tee -a $REPORTFILEnu=`echo $nu+1|bc` done/usr/local/bin/gnuplot --persist <$REPORTFILESysInfo $SYSINFO_FILEecho “” >>$REPORTFILECpuAllUsage $CPU_USAGE_FILECpuEachCoreUsage $CPU_USAGE_FILEecho “” >>$REPORTFILEMemoryUsage $MEMORY_USAGE_FILEecho “” >>$REPORTFILEDiskUsage $DISK_USAGE_FILEecho “” >>$REPORTFILENetworkPerformance $NETWORK_USAGE_FILEecho “” >>$REPORTFILE#脚本执行完成之后,会在性能数据所在的目录中生成#report.txt 性能报告文本#TotalCpuUsage.png CPU利用率图表#CpuCoreIdle.png 每个CPU核心的Idle#MemoryUsage.png 内存使用率#DiskIOPSPerformance.png 磁盘IOPS性能#NetworkPackagePerformance.png 网卡发包率性能#NetworkThougtputPerformance.png 网卡吞吐性能#################################################
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。