学习啦 > 学习电脑 > 电脑硬件知识 > CPU知识 > 关于linux的进程中的各个线程cpu占用情况进行分析和查看

关于linux的进程中的各个线程cpu占用情况进行分析和查看

时间: 捷锋774 分享

学习啦在线学习网关于linux的进程中的各个线程cpu占用情况进行分析和查看

学习啦在线学习网   CPU是电脑的重要组成部分,是不可缺少的角色。下面是学习啦小编带来的关于关于linux的进程中的各个线程cpu占用情况进行分析和查看的内容,欢迎阅读!

  关于linux的进程中的各个线程cpu占用情况进行分析和查看:

学习啦在线学习网   我们经常会在新开的服搭建一个游戏的服务器,有时候要进行压力测试,那么如何来看呢,一般我们会通过top命令查看各个进程的cpu和内存占用情况,获得到了我们的进程id,然后我们也许会通过pstack命令查看里边的各个线程id以及对应的线程现在正在做什么事情,分析多组数据就可以获得哪些线程里有慢操作影响了服务器的性能,从而得到解决方案。比如这样的以组数据:

  [root@AY130816144542124256Z bin]# pstack 30222

  Thread 9 (Thread 0x7f729adc1700 (LWP 30251)):

学习啦在线学习网   #0 0x00007f72a429b720 in sem_wait () from /lib64/libpthread.so.0

  #1 0x0000000000ac5eb6 in Semaphore::down() ()

  #2 0x0000000000ac5cac in Queue::get() ()

  #3 0x00000000009a583f in DBManager::processUpdate(Queue*) ()

  #4 0x00000000009a4bfb in dbUpdateThread(void*) ()

学习啦在线学习网   #5 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0

  #6 0x00007f72a459267d in clone () from /lib64/libc.so.6

学习啦在线学习网   Thread 8 (Thread 0x7f727c579700 (LWP 30252)):

学习啦在线学习网   #0 0x00007f72a429b720 in sem_wait () from /lib64/libpthread.so.0

  #1 0x0000000000ac5eb6 in Semaphore::down() ()

学习啦在线学习网   #2 0x0000000000ac5cac in Queue::get() ()

学习啦在线学习网   #3 0x00000000009a5799 in DBManager::processQuery(Queue*) ()

  #4 0x00000000009a4c3a in dbQueryThread(void*) ()

学习啦在线学习网   #5 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0

  #6 0x00007f72a459267d in clone () from /lib64/libc.so.6

  Thread 7 (Thread 0x7f7257fff700 (LWP 30253)):

  #0 0x00007f72a42997bb in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0

  #1 0x00007f72a549ee08 in utils::thread::condition_impl::timed_wait(int) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1

学习啦在线学习网   #2 0x00007f72a549ebd3 in utils::thread::Condition::timed_wait(int) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1

  #3 0x00000000009d5f57 in utils::MessageQueue::pop() ()

  #4 0x00000000009d5557 in FightReport::svc() ()

  #5 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1

学习啦在线学习网   #6 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0

  #7 0x00007f72a459267d in clone () from /lib64/libc.so.6

  Thread 6 (Thread 0x7f72397b7700 (LWP 30254)):

  #0 0x00007f72a4588fc3 in poll () from /lib64/libc.so.6

  #1 0x00007f72a0fbded4 in __libc_res_nsend () from /lib64/libresolv.so.2

  #2 0x00007f72a0fba76a in __libc_res_nquery () from /lib64/libresolv.so.2

  #3 0x00007f72a0fbad29 in __libc_res_nquerydomain () from /lib64/libresolv.so.2

学习啦在线学习网   #4 0x00007f72a0fbb9cf in __libc_res_nsearch () from /lib64/libresolv.so.2

学习啦在线学习网   #5 0x00007f729adc37a7 in _nss_dns_gethostbyname4_r () from /lib64/libnss_dns.so.2

学习啦在线学习网   #6 0x00007f72a457a4c3 in gaih_inet () from /lib64/libc.so.6

  #7 0x00007f72a457cb20 in getaddrinfo () from /lib64/libc.so.6

学习啦在线学习网   #8 0x00007f72a56fc782 in Curl_getaddrinfo_ex () from /usr/lib64/libcurl.so.4

  #9 0x00007f72a56f1d42 in Curl_getaddrinfo () from /usr/lib64/libcurl.so.4

  #10 0x00007f72a56c9e77 in Curl_resolv () from /usr/lib64/libcurl.so.4

  #11 0x00007f72a56ca138 in Curl_resolv_timeout () from /usr/lib64/libcurl.so.4

  #12 0x00007f72a56d8d88 in ?? () from /usr/lib64/libcurl.so.4

  #13 0x00007f72a56ddb79 in ?? () from /usr/lib64/libcurl.so.4

  #14 0x00007f72a56de76e in Curl_connect () from /usr/lib64/libcurl.so.4

学习啦在线学习网   #15 0x00007f72a56e69b0 in Curl_perform () from /usr/lib64/libcurl.so.4

  #16 0x0000000000ae6e3d in HttpClient::svc() ()

学习啦在线学习网   #17 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1

  #18 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0

学习啦在线学习网   #19 0x00007f72a459267d in clone () from /lib64/libc.so.6

  Thread 5 (Thread 0x7f721af6f700 (LWP 30255)):

  #0 0x00007f72a455691d in nanosleep () from /lib64/libc.so.6

  #1 0x000000000098cb8a in Sleep(unsigned long) ()

学习啦在线学习网   #2 0x000000000098b87d in DynResource::svc() ()

学习啦在线学习网   #3 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1

学习啦在线学习网   #4 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0

学习啦在线学习网   #5 0x00007f72a459267d in clone () from /lib64/libc.so.6

学习啦在线学习网   Thread 4 (Thread 0x7f71fc727700 (LWP 30256)):

学习啦在线学习网   #0 0x00007f72a455691d in nanosleep () from /lib64/libc.so.6

学习啦在线学习网   #1 0x000000000098cb8a in Sleep(unsigned long) ()

  #2 0x0000000000a61516 in PlayerOpLogThread::svc() ()

  #3 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1

学习啦在线学习网   #4 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0

学习啦在线学习网   #5 0x00007f72a459267d in clone () from /lib64/libc.so.6

  Thread 3 (Thread 0x7f71ddedf700 (LWP 30257)):

  #0 0x00007f72a4592c73 in epoll_wait () from /lib64/libc.so.6

  #1 0x00007f72a51f334f in Epoll_Reactor::run_reactor_event_loop() () from /usr/local/net_manager-0.0.2/lib/libnet_manager.so.0.0.2

  #2 0x00007f72a51f2523 in Net_Thread::svc() () from /usr/local/net_manager-0.0.2/lib/libnet_manager.so.0.0.2

学习啦在线学习网   #3 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1

学习啦在线学习网   #4 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0

学习啦在线学习网   #5 0x00007f72a459267d in clone () from /lib64/libc.so.6

学习啦在线学习网   Thread 2 (Thread 0x7f71bf697700 (LWP 30258)):

  #0 0x00007f72a4592c73 in epoll_wait () from /lib64/libc.so.6

学习啦在线学习网   #1 0x00007f72a51f334f in Epoll_Reactor::run_reactor_event_loop() () from /usr/local/net_manager-0.0.2/lib/libnet_manager.so.0.0.2

学习啦在线学习网   #2 0x00007f72a51f2523 in Net_Thread::svc() () from /usr/local/net_manager-0.0.2/lib/libnet_manager.so.0.0.2

  #3 0x00007f72a5494b45 in utils::Task_Base::thread_proc(void*) () from /usr/local/utils-0.0.1/lib/libutils.so.0.0.1

学习啦在线学习网   #4 0x00007f72a4295851 in start_thread () from /lib64/libpthread.so.0

  #5 0x00007f72a459267d in clone () from /lib64/libc.so.6

学习啦在线学习网   Thread 1 (Thread 0x7f72a60ae7e0 (LWP 30222)):

学习啦在线学习网   #0 0x00007f72a4584c95 in _xstat () from /lib64/libc.so.6

学习啦在线学习网   #1 0x00007f72a45483e0 in __tzfile_read () from /lib64/libc.so.6

学习啦在线学习网   #2 0x00007f72a4547864 in tzset_internal () from /lib64/libc.so.6

学习啦在线学习网   #3 0x00007f72a4547b20 in tzset () from /lib64/libc.so.6

学习啦在线学习网   #4 0x00007f72a4546699 in timelocal () from /lib64/libc.so.6

  #5 0x0000000000b0b08d in Achieve::GetRemainTime(AchieveTemplate*) ()

  #6 0x0000000000b115ca in Achieve::update() ()

  #7 0x0000000000a197ce in Player::update() ()

  #8 0x0000000000b1b272 in PlayerMng::Tick() ()

学习啦在线学习网   #9 0x0000000000a73105 in GameServer::FrameTick(unsigned int) ()

学习啦在线学习网   #10 0x0000000000a6ff80 in GameServer::run() ()

  #11 0x0000000000a773a1 in main ()

  [root@AY130816144542124256Z gameserver]# ps -eLo pid,lwp,pcpu | grep 30222

  30222 30222 31.4

学习啦在线学习网   30222 30251 0.0

学习啦在线学习网   30222 30252 0.0

  30222 30253 0.0

  30222 30254 0.0

  30222 30255 0.0

  30222 30256 1.2

学习啦在线学习网   30222 30257 1.2

学习啦在线学习网   30222 30258 1.0

  多组数据显示表明我们的主逻辑线程的确占用的cpu很高,发现其实在Achieve::update() 的时候做了太多没有用的判断,并且可以减少循环进入的次数的,所以我在这里进行了优化

  后来用了一下iptraf命令查看了网络流量:

学习啦在线学习网   第一项:IP流量监控

  第二项:常规查看网卡流量状态。只查看各网卡的总流量

  第三项:详细查看网卡流量状态。比如按TCP,UDP,ARP等协议查看

学习啦在线学习网   选all interfaces,查看所有网卡接口

学习啦在线学习网   界面分上下两部分,上部分可详细显示哪个与之相连的IP,发了多少包,即时流量是多少,下部分,可以显示udp等信息。

学习啦在线学习网   显示连接本地服务器的所有连接流量情况

学习啦在线学习网   另外不得不提到另外一个命令sar:

  sar有很多用途,如果要来监控网络流量,使用下面的命令行方式:

学习啦在线学习网   sar -n DEV interval count

学习啦在线学习网   其中,interval是统计时间间隔,以秒为单位;count是总共统计几次,如果为0就不断的统计直到 Ctrl+C 打断,否则执行count次就退出。

学习啦在线学习网   比如:sar -n DEV 1 4

学习啦在线学习网   比如:sar -n DEV 10 0

  IFACE:LAN接口

学习啦在线学习网   rxpck/s:每秒钟接收的数据包

  txpck/s:每秒钟发送的数据包

学习啦在线学习网   rxbyt/s:每秒钟接收的字节数

学习啦在线学习网   txbyt/s:每秒钟发送的字节数

学习啦在线学习网   sar -n DEV -u 1 10

  07:22:01 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

  07:22:02 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

学习啦在线学习网   07:22:02 PM eth0 2.47 0.00 0.11 0.00 0.00 0.00 0.00

学习啦在线学习网   07:22:02 PM eth1 80.25 22.22 3.53 3.52 0.00 0.00 0.00

  07:22:02 PM CPU %user %nice %system %iowait %steal %idle

学习啦在线学习网   07:22:03 PM all 1.85 0.00 1.06 0.00 0.00 97.09

  07:22:02 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

  07:22:03 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

  07:22:03 PM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00

  07:22:03 PM eth1 66.67 19.75 2.95 3.22 0.00 0.00 0.00

  07:22:03 PM CPU %user %nice %system %iowait %steal %idle

  07:22:04 PM all 2.12 0.00 1.06 0.00 0.00 96.82

  07:22:03 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

学习啦在线学习网   07:22:04 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

  07:22:04 PM eth0 7.32 4.88 0.65 0.38 0.00 0.00 0.00

学习啦在线学习网   07:22:04 PM eth1 85.37 28.05 4.18 3.88 0.00 0.00 0.00

  07:22:04 PM CPU %user %nice %system %iowait %steal %idle

  07:22:05 PM all 3.96 0.00 2.64 0.00 0.00 93.40

  07:22:04 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

  07:22:05 PM lo 412.50 412.50 104.44 104.44 0.00 0.00 0.00

  07:22:05 PM eth0 13.75 12.50 1.32 1.26 0.00 0.00 0.00

学习啦在线学习网   07:22:05 PM eth1 903.75 707.50 174.12 62.42 0.00 0.00 0.00

学习啦在线学习网   07:22:05 PM CPU %user %nice %system %iowait %steal %idle

  07:22:06 PM all 5.25 0.00 4.46 2.10 0.00 88.19

  07:22:05 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

  07:22:06 PM lo 849.41 849.41 154.54 154.54 0.00 0.00 0.00

  07:22:06 PM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00

  07:22:06 PM eth1 1287.06 1337.65 84.48 461.76 0.00 0.00 0.00

  07:22:06 PM CPU %user %nice %system %iowait %steal %idle

学习啦在线学习网   07:22:07 PM all 1.85 0.00 1.06 0.00 0.00 97.09

学习啦在线学习网   07:22:06 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

  07:22:07 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

  07:22:07 PM eth0 4.94 0.00 0.22 0.00 0.00 0.00 0.00

  07:22:07 PM eth1 97.53 19.75 4.32 3.18 0.00 0.00 0.00

学习啦在线学习网   07:22:07 PM CPU %user %nice %system %iowait %steal %idle

  07:22:08 PM all 1.58 0.00 1.32 0.00 0.00 97.11

  07:22:07 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

  07:22:08 PM lo 4.94 4.94 0.31 0.31 0.00 0.00 0.00

  07:22:08 PM eth0 1.23 0.00 0.06 0.00 0.00 0.00 0.00

  07:22:08 PM eth1 67.90 24.69 3.02 3.94 0.00 0.00 0.00

  Average: CPU %user %nice %system %iowait %steal %idle

学习啦在线学习网   Average: all 3.63 0.00 2.55 0.84 0.00 92.98

  Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

  Average: lo 212.61 212.61 50.54 50.54 0.00 0.00 0.00

  Average: eth0 42.79 41.70 3.27 41.84 0.00 0.00 0.00

学习啦在线学习网   Average: eth1 492.48 432.48 53.63 110.40 0.00 0.00 0.00

看了关于linux的进程中的各个线程cpu占用情况进行分析和查看文章内容的人还看:

1.Linux TOP命令 按内存占用排序和按CPU占用排序

2.Linux中查看CPU的信息的方法是什么

3.Linux系统下,CPU信息详解(cpuinfo,多核,多线程):

4.java和多线程cpu

5.Linux系统上如何进行openmp多线程编程

6.提高实时操作系统的实时性能和可靠性策略论文

613650