kk Blog —— 通用基础

date [-d @int|str] [+%s|"+%F %T"]

mark problem

C语言中宽字符和多字节字符 MB_CUR_MAX

stdlib.h
MB_CUR_MAX 当前locale中多字节字符的最大字节数目
如果把字符串当成多字节字符处理会慢很多
sort命令的一些版本中会根据locale中的LANG来设置比较函数,如果没设置好会导致sort跑的很慢。

内核栈溢出

因为内核栈中栈底保存thread_info,所以如果内核栈溢出会破坏thread_info,这样当进程发生睡眠、中断、抢占等调度时就会出错。
容易报try_to_wakeup+XXX错误,等等

定时器 timer 注意

如果mod_timer设置成马上执行,然后下面又是setup_timer。
有可能的情况是:进入了中断执行过程,可是setup_timer又改变timer结构,导致继续执行时用到timer结构出错。

查看内核栈

用 echo t > /proc/sysrq-trigger 把内核栈整个打出来。
可以看/proc/{pid}/wchan,里面是该进程阻塞位置的内核函数名,在所有办法都没戏的时候可以看它。

mark

修复ext4日志(jbd2)bug
rhel6再次发现jbd2的bug
rhel6 的软RAID问题
stable pages
追踪CPU跑满