Linux IO模式
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。
1本文讨论的背景是Linux环境下的network IO。
概念说明在进行解释之前,首先要说明几个概念:- 用户空间和内核空间- 进程切换- 进程的阻塞- 文件描述符- 缓存 I/O
用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间。
进程切换为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并 ...
代码整洁之道
必要性
要有代码,大胆写,Imperfect code is Better Than Perfect
现在就做,later equals never,Now is better than never
从开始就不要为了一时便利去破坏代码整洁
坚持同一规范
隔离与性能的权衡
什么是代码整洁应当有单元测试以及验收测试,使用有意义的命名,只提供一种做某一件事的途径(而非多种),尽量少的依赖关系,清晰并且尽量少的API
能通过所有测试
没有重复代码
体现系统全部设计理念
包括尽量少的实体,例如,类、方法、函数等
让读的过程轻松,即便会让写的过程更难
让营地比你来的时候 更干净
细节
名副其实
避免歧义,O I等,避免废话
使用可搜索的名称
类名不应当是动词
方法名应当是动词或动词短语
宁可明确,毋为好玩(生活和思想需要务虚,但code要务实)
避免双关语,一词一意
每个概念一个单词,一意一词
使用算法名、计算机术语、模式名、数学术语命名
使用所在领域命名
函数就该小
函数式编程,尽量少用副作用编程
做好隔离(抽象、封装、逻辑与业务隔离,实现 ...
trex测试流程
Trex简单测试注意
trex主机与dut主机第一个network为管理网,第二个与第三个network为测试用网,trex主机与dut主机测试用网eth1互联,trex主机与dut主机测试用网eth2互联;
只可运行net_set.sh 一次,获得mac地址,若mac地址全为0,重启trex主机;
测试项可在run_trex.sh修改(-m 参数为几万pps -d参数为测试时间)。
步骤
打开trex主机 运行trex_set.sh 并得到两个mac地址fa:ad:96:2e:3c:01 fa:0b:32:14:a9:02;
打开dut主机运行 dut_set.sh fa:ad:96:2e:3c:01 fa:0b:32:14:a9:02;
打开trex主机运行run_trex.sh ,等待运行结束得到trex结果。
镜像地址dut:http://192.168.200.100/mirror/longtao.wu/image_store/linux_image/wlt-simpletrextest-dut.qcow2
trex:http://192.168.200.100/ ...
vdbench的使用
ssh免密配置
参考:https://blog.csdn.net/SweeNeil/article/details/95338293
使用Vdbench测试工具对所有虚拟机磁盘进行压力测试,vdbench测试工具脚本主机定义设置如下:
hd=default,vdbench=/home/vdbench,user=root,shell=ssh
hd=hd1,system=node1
hd=hd2,system=node2
hd=hd3,system=node3
……
设置测试工具模型为8k块大小随机读,测试数据量为块存储总SSD缓存大小的1倍。在压力虚拟机上运行Vdbench测试工具。存储定义、工作负载定义、运行定义设置如下:
sd=sd1,hd=hd1,lun=/dev/sdb,openflags=o_direct,hitarea=1G,threads=1(厂家自行调整)
……
wd=wd1,sd=sd*,seekpct=100,rdpct=100,rhpct=60,xfersize=8k
rd=rd1,wd=wd1,iorate=max,elapsed=604800,ma ...
使用qemu-imag打包iso
使用qemu-image 压缩qcow2镜像qemu-img convert -c -O qcow2 raw.qcow2 outZipped.qcow2
raw.qcow2是原始镜像
outZipped.qcow2是压缩后的目标镜像
转换并压缩qemu-img convert -f raw -O qcow2
swingbench介绍
Swingbench is a free load generator (and benchmarks) designed to stress test an Oracle database (10g,11g,12c).
介绍
Swingbench组件: Swingbench是一个图形界面,用户可以编辑配置参数。可以显示实时的图形。 Minibench是一个图形界面,可以显示简单的实时图形。 Charbench是一个命令行的工具,有很多的命令行选项。
四种基准测试
Benchmark
描述
读写比例
备注
Order Entry
经典的Order Entry基准测试。像TPC。
60/40
TPC-C类似的,基于Oracle自带的两个Sample Schema:OE和SH
Calling Circle
电话公司自助系统
70/30
基于电话自助服务系统的基准测试,大小相对固定,每次运行都需要重新生成schema
Stess Test
简单的INSERT/DELETE/UPDATE/SELECT
50/50
Stress Test是最简单的测试,执行ins ...
echarts的使用
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220 ...
perl极简教程
perl :practical exteaction report language
perl是动态脚本语言
脚本运行是要
1#!/usr/bin/perl
使用#单行注释,使用=pod =cut多行注释
perl不关心留白数量
heredoc用法,单引号不转义,双引号转义
使用反斜杠\转义
##标量定义
数字
1$num=12;
字符串
1$stri="string";
浮点数
1$float=1.2;
数组
1@arr=(0,1,2);
字典
1%map=('a'=>1,'b'=>2);
py2与py3在closerange的区别
file descriptors(/proc下)文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。
优点文件描述符的优点主要有两个:
基于文件描述符的I/O操作兼容POSIX标准。
在UNIX、Linux的系统调用中,大量的系统调用都是依赖于文件描述符
此外,在Linux系列的操作系统上,由于Linux的设计思想便是把一切设备都视作文件。因此,文件描述符为在该系列平台上进行设备相关的编程实际上提供了一个统一的方法。
缺点文件描述符的概念存在两大缺点:
在非UNIX/Linux 操作系统上(如Windows),无法基于这一概念进行编程——事实上,Windows下的文件描述符和信号量、互斥锁等内核对象一样都记作HANDLE。
由于文件描述符在形式上不过是个整数,当代码量增大时,会使编程者难以分清哪些整数意味着数据,哪些意 ...
JRE和JDK的区别
先给出JDK,JRE,JVM(带上JVM有助于理解)的名词解释
Java开发工具包(JDK)是一种用 于开发Java应用程序和applet的软件开发环境。它包括Java运行时环境(JRE)、解释器/加载器(Java)、编译器(javac)、归档器(jar)、文档生成器(Javadoc)和Java开发所需的其他工具。
JRE代表“Java Runtime Environment”,也可以写成“Java RTE”。Java Runtime Environment提供了执行Java应用程序的最低要求;它由Java虚拟机(JVM)、核心类和支持文件组成。
另外也给出了JVM(java virtual machine)的解释。
它是一种指定Java虚拟机工作的规范。但是实现提供者对算法的选择是独立的。它的实现由Sun和其他公司提供。
满足JVM规范要求的计算机程序的一种实现。
运行时实例:每当您在命令提示符下编写java命令来运行java类时,就会创建一个JVM实例。
一. JDK、JRE和JVM的区别为了理解这三者之间的区别,让我们考虑下面的图表。
JD ...