以技术为主
admin
该用户没有分享资料
admin
yaronspace.cn 一周年
十 27th
2009-10-27买了yaronspace.cn域名和空间,纪念下~
再接再厉!!
下面是一年来流量变化情况,数据来自google analytics



systemTap 工具介绍[zz]
十 25th
SystemTap 是监控和跟踪运行中的 Linux 内核的操作的动态方法。这句话的关键词是动态,因为 SystemTap 没有使用工具构建一个特殊的内核,而是允许您在运行时动态地安装该工具。它通过一个名为Kprobes 的应用编程接口(API)来实现该目的,本文将探索这个 API。我们首先了解以前的一些内核跟踪方法,然后在深入探讨 SystemTap 的架构及其使用。
SystemTap 与一种名为 DTrace 的老技术相似,该技术源于 Sun Solaris 操作系统。在 DTrace 中,开发人员可以用 D 编程语言(C语言的子集,但修改为支持跟踪行为)编写脚本。DTrace 脚本包含许多探针和相关联的操作,这些操作在探针 “触发” 时发生。例如,探针可以表示简单的系统调用,也可以表示更加复杂的交互,比如执行特定的代码行。清单 1 显示了 DTrace 脚本的一个简单例子,它计算每个进程发出的系统调用的数量(注意,使用字典将计数和进程关联起来)。该脚本的格式包含探针(在发出系统调用时触发)和操作(对应的操作脚本)。
清单 1. 计算每个进程的系统调用的简单 DTrace 脚本
syscall:::entry
{
@num[pid,execname] = count();
}
|
DTrace 是 Solaris 最引人注目的部分,所以在其他操作系统中开发它并不奇怪。DTrace 是在 Common Development and Distribution License (CDDL) 之下发行的,并且被移植到 FreeBSD 操作系统中。
另一个非常有用的内核跟踪工具是 ProbeVue,它是 IBM 为 IBM® AIX® 操作系统 6.1 开发的。您可以使用 ProbeVue 探查系统的行为和性能,以及提供特定进程的详细信息。这个工具使用一个标准的内核以动态的方式进行跟踪。清单 2 显示了 ProbeVue 脚本的一个例子,它指出发出 sync 系统调用的特定进程。
清单 2. 指出哪个进程调用 sync 的简单 ProbeVue 脚本
@@syscall:*:sync:entry
{
printf( "sync() syscall invoked by process ID %d\n", __pid );
exit();
}
|
考虑到 DTrace 和 ProbeVue 在各自的操作系统中的巨大作用,为 Linux 操作系统策划一个实现该功能的开源项目是势不可挡的。SystemTap 从 2005 年开始开发,它提供与 DTrace 和 ProbeVue 类似的功能。许多社区还进一步完善了它,包括 Red Hat、Intel、Hitachi 和 IBM 等。
这些解决方案在功能上都是类似的,在触发探针时使用探针和相关联的操作脚本。现在,我们看一下 SystemTap 的安装,然后探索它的架构和使用。
原文地址
主流文本编辑器学习曲线[zz]
十 20th
有意思

主流编辑器学习曲线图
注1:Pico(PIne COmposer)是Unix操作系统中最常见的三种文字处理软件之一,具有文字编辑、搜索、拼写检查、文件浏览和段对齐功能,适合高效地编辑短小的文件。Pico是由华盛顿大学开发的免费软件,随着pine电子邮件处理软件发布。它是在Emacs的基础上以pine的邮件编辑为目标而开发的,所以其指令集是Emacs的子集,但是由于在界面上有提示快捷键,相对于vi和Emacs来说更加容易使用。由于Pico虽然是免费软件,但是它并不是开源软件,所以很多Linux版本并不包含Pico。这些版本通常提供一个界面类似的开源软件nano——Pico的克隆版。
注2:图中的纵横坐标没有标明。我所理解的是——X轴是熟练程度,Y轴是技能。于是对于notepad 来说,技能和熟练程度呈正比。对于VS来说,熟练程度越大,所需要技能先是越来越多,而随着熟练程度的增长,你需要的技能也越少。而对于VI来说,一开始就需要相当大的技能,但一旦掌握这些技能,则你将会越来越熟练。而对于emacs来说,技能和熟练程度是呈旋涡状。
osdi 会议链接
十 19th
http://www.usenix.org/events/osdi10/tech/
里面有GOOGLE Microsoft 和VMware 等公司的文章,很值得一看,记录下
vim templates模板用法介绍
十 18th
今天看到一个同学问vim 中新建文件时自动生成如作者、时间等信息的vim 插件,想到之前也试过一些template插件,都没有成功,最后使用doxgen取代之,今天就想试下,google半天终于解决了
下载template.rar 文件,第三方提供
下载地址
1、将文件放入 plugin(~/.vim/plugin/ 或者 $HOME/vimfiles/plugin/)目录
2、.vimrc 加入
let g:template_load = 1
let g:template_tags_replacing = 1
let g:T_AUTHOR = “liyangguang”
let g:T_AUTHOR_EMAIL = “liyangguang@software.ict.ac.cn”
let g:T_AUTHOR_WEBSITE = “http://www.yaronspace.cn/blog”
let g:T_DATE_FORMAT = “%Y-%m-%d %H:%M:%S”
3、新建一个模板文件存为 templates/tpl.c(例如~/.vim/templates/tpl.c)
模板名的取名规则是 tpl.extension,新建*.h的时候,tpl.h 被读入
/* * Author: <T_AUTHOR> <<T_AUTHOR_EMAIL>> * <T_AUTHOR_WEBSITE> * * File: <T_FILENAME> * Create Date: <T_CREATE_DATE> * */ int main(int argc, char* argv[]) { return 0; } /* vim: set ts=4 sw=4: */
Ok,启动vim,看看是否加载模板成功
ps: 可能会遇到^M是非法字符的错误,使用vim 打开,在命令模式下输入:set ff=unix :w 重启vim即可
剖析开源云【转载】
十 14th
这篇文章写得不错~
云计算剖析
本文将从云架构的核心抽象开始讨论(从 Infrastructure as a Service [IaaS]),然后是构建块,最后是高度集成的解决方案。
尽管不是必需的,但虚拟化为构建可动态伸缩的架构提供了一些独特的优势。除可伸缩性外,为了负载均衡,虚拟化还能够在物理服务器间迁移虚拟机(VM)。图 1 中所示的这个虚拟化组件是由一个名为 hypervisor(有时也叫作 虚拟机监视器[VMM])的软件层提供的。这个层提供了同时在一个单一物理机器上执行多个操作系统(及其应用程序)的能力。在这个 hypervisor 上有一个名为 virtual machine 的对象,这个对象封装了操作系统、应用程序及配置。另外,如果需要,还可以在这个 hypervisor 中提供设备仿真或是作为一个 VM 提供设备仿真。最后,考虑到虚拟化的新的动态特性及它所提供的功能,还会需要新的管理模式。这种管理最好在各层内完成,本地管理在服务器上完成,还有更高级别的基础设施管理,以便提供虚拟环境的全面管理。
原文地址
monitor-系统cpu mem disk使用情况【原创】
十 13th
昨天师兄让写一个,需要监测系统的cpu mem disk使用情况,实现的话可以直接用linux 的内置命令top df完成
遇到一个问题就是top 重定向文件中显示乱码问题,最后使用top -bn 1 | grep Mem > mem.txt 这条命令搞定,如果没有加
-b参数的话,会出现乱码
README
monitor Usage
Usage:./monitor -m|c|d -o <output>
1,显示系统当前内存使用
./monitor -m -o mem.txt
2,显示系统当前cpu的使用
./monitor -c -o cpu.txt
3, 显示磁盘分区使用情况
./monitor -d -o disk.txt 更多 >
netstrain 和 netperf 网络吞吐量测试软件
十 12th
netstrain
代码很小,使用也很方便
下载tar 包,解压make 即可,生成两个二进制文件netstraind netstrain
netstraind [-46] port 服务器端
netstrain [-46] host port send|recv|both 客户端
下载地址:http://sourceforge.net/projects/netstrain/files/
NetStrain is a tool to measure practical data throughput between two
machines over a TCP connection. It can be used for performance
testing, stress/stability testing and to demonstrate various network
effects. It supports both IPv4 and IPv6, provided the underlying
system does.
netperf
下载地址:http://www.netperf.org/netperf/DownloadNetperf.html
介绍netperf的一篇文章:http://www.ibm.com/developerworks/cn/linux/l-netperf/index.html
linux gcc 下使用总结【继续更新】
九 29th
入门知识
编译器把编译生成目标代码的任务分为以下4步:
a.预处理,把预处理命令扫描处理完毕;
b.编译,把预处理后的结果编译成汇编或者目标模块;
c.汇编,把编译出来的结果汇编成具体CPU上的目标代码模块;
d.连接,把多个目标代码模块连接生成一个大的目标模块;
gcc 下常用参数
-I 指定头文件搜索路径,默认情况下gcc的搜索路径/usr/include /usr/local/include
-L 指定库文件的搜索路径,默认的搜索路径为 /lib/ /usr/lib /usr/local/lib ??
-l 指定需要链接的库名称, 注:正常的库libboost_regex.so 使用-lboost_regex 省略前面的lib和后面的扩展名
-c 只生成目标代码 注:生成库文件时使用,只编译不链接
-shared 生成动态库
-o 指定输出文件名称
-W 显示所有的警告信息 注:建议打开
-w 屏蔽所有的警告信息,默认情况
-g 把调试开关打开,让编译的目标文件有调试信息
-S 把源文件编译成汇编代码,不做汇编和连接的动作
-E 只把源文件进行预处理之后的结果输出来。不做编译,汇编,连接的动作
-Xlinker -rpath=./lib 指定程序运行是动态库的搜索路径
-MM 显示出目标文件所依赖的源文件和头文件,头文件仅包括本地头文件
-M 与-MM类似,但是头文件包括系统头文件,即用”<>”
这两个参数在写makefile时用到
实用方法
1, 生成动态库方法
$ gcc -fPIC -c func.c -o func.o
$ gcc -shared -o libfunc.so.1.0.0 func.o
2, 生成静态库方法
$ gcc -c func.c -o func.o
$ ar rcs libfunc.a func.o
3, ldd 命令
查看动态库和可执行文件的依赖的库
4. -MM参数
[yaronli@sim124 cc]$ gcc -MM transfer/Transfer_server.cpp -I. Transfer_server.o: transfer/Transfer_server.cpp transfer/Transfer.h \ transfer/transfer_types.h transfer/TransferStatus.h \ transfer/TransferTasks.h common/TaskIf.h transfer/TransferWorker.h \ common/RingBuffer.h common/TaskIf.h common/FileHandler.h common/log.h \ common/DbOperator.h transfer/Transfer_server.h
问题总结
1, 静态编译时,被依赖库放到依赖库的后面,否则链接时会出错
2, 在生成动态库…………………


近期评论