您的位置:首页 > 运维架构

系统监控命令

2016-02-22 22:38 330 查看
top命令

top -c: 在top命令显示界面显示出完整的进程名和启动参数

top -H: 在top命令中显示所有的线程状

top -p pid: 这个pid可以是进程pid,也可以是线程pid(进程的pid就是该进程主线程的pid), 该命令实际显示的是该线程所属进程的状态.

top -H -p pid: pid是一个线程号, 该命令列出该线程所属进程的所有线程的状态

gstack 参看进程堆栈

gstack pid:

1. pid是进程号时(主线程号),显示进程当前所有线程的调用堆栈

2. pid是线程号时(非主线程号), 显示当前线程的调用堆栈

gstack是实时的, 某个时刻的堆栈显示只是这个时刻的堆栈调用情况

rdtsc CPU clock计数

typedef struct CPUUsage

{

double
m_cycles; /* number of cycles */

} CPUUsage;

static inline unsigned long rdtsc(void)

{

unsigned int hi = 0;

unsigned int lo = 0;

asm volatile("rdtsc" : "=a"(lo), "=d"(hi));

return ((unsigned long)lo ) | (((unsigned long)hi) << 32);

}

static void

CPUUsageGetCurrent (CPUUsage *cur)

{

cur->m_cycles = rdtsc ();

}

static void

CPUUsageAccumDiff(CPUUsage *dst,

const CPUUsage *add,

const CPUUsage *sub)

{

dst->m_cycles += add->m_cycles - sub->m_cycles;

}

可以用于CPU计数, 一个时钟周期,CPU计数就加1, 通过计算两个点之间的CPU计数的差值, 就可以得出两个点之间的时间(计数差值/CPU频率).

问题:

1. 当CPU处于省电模式时, CPU频率可能跳变, 时间不准---- >解决方法: 关闭CPU省电,让CPU频率不变

2. 多核CPU时, 进程可能在不同CPU之间跳变, 如果CPU之间的时钟计数器不同步,计数差值会错误---->解决方法:

1):关闭CPU省电,同步CPU之间的计数(貌似很困难)

2):将进程与CPU绑定
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: