共 99 篇文章
共 245 篇文章及评论
有关软件和IT的杂项
C++是一种广泛使用的语言,也曾有兴趣略作研究。因为最近一段时间估计不会用它进行开发了,静下心来,谈谈我对它的理解或是发现。 (1) 引子 本文谈一谈C++中的隐式计数。隐式计数是一个计数器,因为他的储存空间没有显示的体现在程序代码中,故称之为“隐式”,而“计数”是说该存储空间的功能。这么一说,你首先想到的可能是C++中的new []和delete []操作符,不错,用new分配一个数组时,正是使用了“隐式计数”,才使得delete该数组指针时,能够获取到数组元素的个数,请看下面的代码,或许你并不陌生: struct Test { Test() { cout << ...
sar -P ALL cpu使用情况文件访问情况 dirblk/s 定位文件时被目录访问守护进程读取的快(512b)的个数 iget/s i节点查找系统进程被调用次数 lookuppn/s 目录查找进程找到v节点,并获取路径名的次数的活动情况,包括传输、访问、和命中率 bread/s、bwrit/s 块IO操作的数量 lread/s、lwrit/s 逻辑 IO请求的个数 pread/s、pwrit/s ...
也许大家对LISP这个历史悠久的语言会很陌生,但是这个诞生于上个世纪中叶的编程语言到现在还是拥有顽强的生命力。MIT的6.001课程还将它作为计算机科学的入门语言。 最近在学习LISP过程中了解了一个很强大的IDE,它的名字叫DrScheme.它是一个图形化的开发工具,用起来也很方便。这里是它的链接:http://download.plt-scheme.org/drscheme/。这里有Windows版的也有Linux版的. 安装好后,进入主界面,到工具栏中选择Language-->Choose Language,如下图所示。选择R5RS,the Revised5 Report on the Algorithmic Language Scheme。 这里仿照一个简单程序,求平方根: 分别先定义square, ...
在Linux下写脚本的时候, 通常需要根据某些字段对数据进行检索,也就是要实现一般数据库的select功能。在脚本里面这样的功能通常要求很简单, 数据结构也不太复杂, 不需要动用真正的数据库。基于txt格式的简单表是很好的选择,但仅仅使用bash并不太好实现查询, 一般需要通过perl,python来实现。 这里给了一个例子是使用awk来完成的,大家可以直接拿去使用。 两个文件:plaindb.awk是awk的代码, simple_select是bash的wrapper. 代码见后. 以下是定义的文本数据表的格式示例: --- nodes.conf ------ #configure ...
众所周知,perl处理字符串的功能十分强大,然而,作为一种语言,强大是一回事,简单方便则是另外一回事。 今天就遇到一个例子,是这样的,想要在xen上获取某个虚拟机的CPU使用率,于是使用命令“xentop -b -i 2 > /tmp/xentop.tmp”,获得类似下面的数据: NAME STATE CPU(sec) CPU(%) ...
相信大家都已经使用过了windows自带的性能测试工具perfmon。perfmon能够实时的抓取当前环境的硬件信息,并直观的展示出来。但是当你想在编程中利用这些数据,perfmon就不是那么方便了。那么windows是否提供了合适的api来完成这些功能呢?答案是肯定的,这就是Performance Data Helper(PDH)库。PDH库提供了一组功能强大的接口,让使用者能够方便的获取到包括CPU信息,内存信息,I/O信息等等在内的性能数据。 使用PDH库获取性能数据的过程如下:首先,通过打开一个查询(PdhOpenQuery()),然后在在该查询中添加需要的计数器(PdhAddCounter()),然后在合适的时间点采集数据PdhCollectQueryData(),然后在从结构PDH_FMT_COUNTERVALUE中得到数据(dhGetFormattedCounterValue())。在使用完成后,还需要关闭该查询。 在上面的过程中,我们需要定位到一个具体的计数器,作为api的参数。运行环境的硬件数据和OS数据的种类十分繁多,准确精炼的表示这些数据的意义是非常关键的。Windows的做法是一个被成为Counter Path的字符串表示。顾名思义,这个字符串非常类似于文件系统的文件路径。Counter Path的语法如下: \\Computer\PerfObject(ParentInstance/ObjectInstance#InstanceIndex)\Counter 其中,Computer表示机器名或者IP地址,默认值为本机;PerfObject表示性能对象,通常为处理器,内存等等;ParentInstance,ObjectInstance和InstanceIndex是可选项,在对象有多个实例的时候用到;最后,Counter表示相应的寄存器。例如: \\127.0.0.1\Processor\% Processor Time 该Counter Path表示本地的处理器的CPU利用率。将该字符串作为参数传递给PdhAddCounter就可以将该计数器添加到查询中去了。 读者如果想更加详细了解PDH的细节,可以在MSDN中找到相关文档。
提到使用OpenMP实现多线程编程,相对比叫便捷,很多兄弟一定已经很熟悉了。一般的用法都是把OpenMP用在for等循环上,论坛上好多OpenMP在这上的用法也有好多的解释了,我也不班门弄斧了。 但for等循环如果要用在OpenMP上,一般的限制还是比较多的,比如循环不同序列间的数据或逻辑依赖不能过强,必须可以将其分解为或转化为互相独立的关系。此外,有时候虽然看是做到互相独立,但代价很大,比如加了很多的锁,多线程的效果不是很好。这就导致了对OpenMP的使用受到了比较大的限制。一般以我的经验,当for循环处理大的矩阵、数组等时,用OpenMP比较合适,但如果涉及到了很多的逻辑判断,就不是很理想。 从上面可以看出,for等循环不总是适合使用OpenMP。但是不是除了循环,OpenMP就没有用武之地了呢?当然不是,还可以用OpenMP的section,如下图说示,原先线性执行的程序被分成了并行的三段: #pragma omp parallel sections { #pragma omp section { Function1 } #pragma omp ...
前阵子组里买了一套iscsi磁盘阵列。电话找来vendor给咱们配置好。 结果该vendor技术部的同学没用过这个型号,也从来没在linux上配过iscsi。 于是售后服务就成了“全(靠)自(己)动”服务 -_- 简单记了下配置步骤,留作备案吧。 1)配置icsci管理及数据端口的IP。iscsi共有三个网口,一个管理端口,两个数据端口。另外还有一个串口。这一步需要通过串口把iscsi和控制台相连。为了方便,就用笔记本作为串口的控制台。连接步骤和普通的串口连接一样。此时可以在串口终端上看到类似BIOs管理的界面。选择管理端口进行IP配置,然后新建两个session,输入两个数据端口的IP地址。这几个IP的设置只能通过串口进行,而以后若想修改iscsi的ip,就只能在重复这样的工作。 2)把管理端口和数据端口的IP设置好之后,就可以用web界面进行磁盘管理。这一步只需要用网线把iscsi的管理端口和另一台主机的网口相连。启动IE,输入管理端口的IP,就可以看到一个管理界面,登陆进去,可根据需要对磁盘进行raid配置,初始化等等。 3)由于测试使用的是linux系统,最后一步需要在linux上对iscsi进行配置。用switch把linux主机,以及iscsi的数据端口连接起来。然后通过几条简单的命令启动iscsi的服务 # iscsiadm -m discovery -t st -p ipaddress of ...
传说中的机器已经到手了! 8- ) 快递今天送了过来,但是---还没有开通,所以只能先给大家看看样子了 H8310 ...
当时在我工作的同一层楼面的另外一边,有一个属于英特尔架构实验室的团队,负责和美国的同时一起进行i740产品的驱动程序验证工作。所以我们也有幸目睹了不少开发工程样板和测试版以及最后上市的一些英特尔品牌以及第三方品牌的独立显卡产品。 随着i752产品的出现,这一技术已开始逐渐迁移到集成显卡的范畴,并开始在后续的810芯片组等产品上得到了广泛的应用,为个人电脑产品以合理的价位进入日常消费者的家庭打下了扎实的基础。 共同迎接了中国互联网的第一个春天的到来。 比如由于集成显卡没有配备专门的显存,需要共享主板上的内存,所以DVMT技术Dynamic Video Memory Technology得以推出。经由BIOS系统会划出若干内存空间供集成显卡显示核心使用,当需要更多容量的时候,驱动程序会动态的向系统提出请求,核心可以直接访问主内存,使得这种集成芯片性能提高不少。当然那时候总内存空间较小,内存价格比天高,消费者有时候会来问为何我的机器是128M的内存,然而操作系统显示的系统总内存比我实际插的内存总容量要少一点,是不是卖机器的奸商吞掉了我的几兆内存这一类问题。 我的一台基于815集成显卡芯片组的卡英特尔盒装地板D815EEA构成的奔腾III台式机,一直是家庭上网主力机,直到最近才刚刚完成它的历史使命,光荣退役,让位于一台采用915芯片组的MODT。当时的815e芯片组还有一个AIMM (AGP Inline ...