Guan 发布的文章

如何查看系统的上下文切换


vmstat

vmstat:主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断次数。

# 1 表示 每 1 秒 输出一次数据
->:~$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 5787772   2108 3448464    0    0   530  1766  699  975 14  9 73  5  0
 0  0      0 5787648   2108 3448464    0    0     0     0  167  136  0  0 100  0  0
 0  0      0 5787624   2108 3448464    0    0     0     0  196  167  0  0 100  0  0
  • r(Running or Runnable):就绪队列的长度,即,正在运行和等待 CPU 的进程数;
  • b(Blocked):处于不可中断睡眠状态的进程数;
  • cs(context switch):每秒上下文切换次数;
  • in(interrupt):每秒中断次数。


Python 导包技巧


起因

起初学 Go 语言的时候,对它的导包规则感到痛苦,——“那么麻烦干嘛呢!”。但最近接到一些新功能开发任务,于是 “啪嗒啪嗒” 写代码,结果更痛苦了。公司项目目录规划打一开始就不合理,以此为基础的 “繁荣发展” 导致更多混乱与麻烦。于是马上翻开《Python cookbook》解惑,有些心得,这里记之。


C语言-预处理(2)


起因

之前对预处理、宏定义、条件编译,以及文件包含做了个小小总结。涉及而又常用的预处理相关知识还有一些,这次仍然粗略记下。

预处理操作符

C 语言中有两个预处理操作符:#(字符串化运算符)、##(记号粘贴运算符),都可以在 #define 中使用。


C语言-预处理(1)


预处理

C 程序编译流程:1. 预处理阶段 2. 编译阶段 3. 汇编阶段 4. 链接阶段 5. 运行可执行程序。

如何让编译停在预处理结束的时候呢?用参数 -E,完整的示例为 : gcc -E -o src/example.i src/example.c,即:编译 src 目录下的 example.c 文件,在预处理阶段结束后停止,将内容保存到 src 目录下的 example.i 文件中(你甚至可以不用 “.i” 结尾,但这已约定俗成)。


长路


今天意外翻到自己 2012 年在新浪博客上写的一篇文章,想在这里重发一遍,倒不是写得多好。我好怀念那时的自己。

以下原文:

【一】

我们都一样,路长脚短;所以抵达目的时,容颜已坏,鬓角已白。

这是拥有,因此不必伤感;这是逝去,所以无法炫耀。