您现在的位置:首页
--> Erlang非业余研究
latencytop深度了解你的Linux系统的延迟 我们在系统调优或者定位问题的时候,经常会发现多线程程序的效率很低,但是又不知道问题出在哪里,就知道上下文切换很多,但是为什么上下文切换,是谁导致切换,我们就不知道了。
systemtap全局变量自动打印的原因和解决方法 在运行stap的时候,经常会发现在脚本结束运行的时候打出了很多无预期的东西,仔细一看都是些全局变量的dump, 这个问题比较烦人. 我
systemtap函数调用栈信息不齐的原因和解决方法 有时候在看系统代码的时候,我们很难从源码中看出我们感兴趣的函数是如何被调用的,因为调用路径有可能太多。用户空间的程序gdb设断点是个好的方法,内核的就麻烦了。
原创文章,转载请注明: 转载自Erlang非业余研究 本文链接地址: systemtap观察page_cache的使用情况 在规划服务器的内存使用的时候经常需要知道应用在理想情况下会使用多少的pagecache, 我们好预先把这个内存预留出来. 这个值操作系统没有提供可查看的管道,我们只能自己写个脚本来实现. 下面的systemtap脚本每隔N秒显示下当前os下头10个文件占用多少的pagecache, 降序排列.
原创文章,转载请注明: 转载自Erlang非业余研究 本文链接地址: Linux下新系统调用sync_file_range 我们在做数据库程序或者IO密集型的程序的时候,通常在更新的时候,比如说数据库程序,希望更新有一定的安全性,我们会在更新操作结束的时候调用fsync或者fdatasync来flush数据到持久设备去。而且通常是以页面为单位,16K一次或者4K一次。 安全性保证了,但是性能就有很大的损害。而且我们更新的时候,通常是更新文件的某一个页面,...
最近在调查lockless的ring_buffer的时候,发现了ftrace. ftrace是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用.
在作网络程序的时候, 经常需要了解interrupts和软中断的平衡情况, 需要知道每秒有多少中断发生,发生在哪个cpu上。
我们在Linux上总是要保存数据的,数据要不保存在文件系统里要不保存在文件系统(如ext3),要不就在裸设备里面。我们在使用这些数据的时候都是通过文件这个抽象来访问的,操作系统会把我们需要的数据给我们,我们通常无需和块设备打交道。 从下图我们可以很清楚的看到: 我们会发现IO是个层次很深的子系统,有很复杂的数据流动线路...
我们在做服务器的时候,老大扔给你一台机器,要你在上面开发。通常服务器软件是非常依赖于系统的软硬件的,软件通常是要紧贴硬件的特性,如果我们不能了解机器的硬件,我们就无法高效的开发。 比如说想知道Linux的系统的版本,CPU有几个,内存多少大, 机器什么型号,Raid卡什么型号,硬盘有几个,文件系统是什么样子的,网卡什么型号,文件...
NIF是什么? A NIF library contains native implementation of some functions of an Erlang module. 这个功能对于扩展Erlang,利用现有的遗留c的财产,提高性能非常有帮助. 但是通常同学们会无视手册里面的一句话: Avoid doing lengthy work in NIF calls as that may degrade the ...
我们在做IO密集型的应用程序的时候,比如MySQL数据库,通常系统的表现取决于workload的类型。 比如我们要调优,我们就必须非常清楚的知道数据的访问规律,收集到足够的数据,用来做调优的依据。 有很多工具可以收集系统层面的,设备层面的,进程层面的IO数据,但是没有一个现成的工具可以回答我们比如应用打开了多少文件,文件的读和...
我们在做服务器程序的时候,经常要知道一个请求的响应时间,借以优化或者定位问题。 通常的做法是在代码里面加入日志计算时间,这个方法有问题,时间不准确。因为数据从网卡到应用程序,从应用到网卡的时间没有被计算在内。 而且这个时间随着系统的负载有很大的变化。 那同学说,我wireshark, tcpdump抓包人肉统计不行吗。 可以的...
Linux下pstack的实现 Linux下有时候我们需要知道一个进程在做什么,比如说程序不正常的时候,他到底在干吗?最直接的方法就是打印出他所有线程的调用栈,这样我们从栈再配合程序代码就知道程序在干吗了。 Linux下这个工具叫做pstack. 使用方法是 # pstack Usage: pstack 当然这个被调查的程序需要有符号信息。 比较雷人的是 这个程序竟然是个sh...
Tsung用于压测MySQL服务器的脚本 这个MySQL服务器压测的需求是 : 环境: Linux RHEL 5U4 X86-64, 24G内存, 16核. MySQL服务器在10.232.36.100上。 压力由最多32个客户端发起,每个客户端分别做update, insert, delete操作,概率分别是50%, 30%, 20%, 每种操作循环999999 × 100次,每100次操作后休息1-3秒。 这样的压力最多持续2个小时。 我们用的是著名的tsung压...
近3天十大热文
- [69] Twitter/微博客的学习摘要
- [67] IOS安全–浅谈关于IOS加固的几种方法
- [65] 如何拿下简短的域名
- [65] android 开发入门
- [63] find命令的一点注意事项
- [62] Go Reflect 性能
- [61] 流程管理与用户研究
- [60] Oracle MTS模式下 进程地址与会话信
- [59] 图书馆的世界纪录
- [57] 读书笔记-壹百度:百度十年千倍的29条法则
赞助商广告