CentOS服务程序性能评估文档详解
注:此命令需要自行安装(yum install dstat)1概述
ps 查看线程_ps查看线程信息
1.1影响Linux服务程序性能的因素
CPU、内存、磁盘I/O带宽、网络I/O带宽
1.2性能评判
CPU:user% + sys% 70%; 程序在用户态和内核态的执行时间百分比。
内存:Swap In(si)=0; Swap Out(so)=0; 以不使用交换分区为准,如果频繁用到交换分区,内存可能不够了。
硬盘:iowait % 20%;
网络:只要有足够带宽尽情的使用吧,达到网卡带宽linux系统表示毫无压力
其中: %user:表示CPU处在用户模式下的时间百分比。
%sys:表示CPU处在内核模式下的时间百分比。
%iowait:表示CPU等待输入输出完成时间的百分比。
swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM
swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。
1.3性能分析工具
常用系统命令:top、free、ps、uptime、iotop、vmstat、iostat 、dstat、sar。
使用方法:top命令把握全局,使用特定命令深入分析
常用组合方式:
(1)CPU瓶颈:top、vmstat、iostat、sar –u、sar -q
(2)内存瓶颈:free、vmstat、sar -B、sar –r、sar -W
(3)磁盘I/O瓶颈:iotop、iostat、sar -b、sar –u、sar -d
(4)网络瓶颈: dstat
2 top
2.1功能
提供了实时的对系统处理器、内存、任务等状态监视;该命令可以按CPU使用、内存使用对任务进行排序;TOP是一个动态显示过程,可以通过用户按键来不断刷新当前状态,也可以在启动时指定刷新间隔。
2.2命令输出示意图
top - 10:16:29 up 38 days, 15:48, 5 users, load erage: 0.04, 0.10, 0.05
Tasks: 569 total, 2 running, 562 sleeping, 0 stopped, 5 zombie
Cpu(s): 2.6%us, 1.3%sy, 0.4%ni, 95.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 38312k total, 3151560k used, 687552k free, 302944k buffers
Swap: 6078456k total, 631852k used, 5446604k free, 348548k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10603 zhixiang 20 0 1225m 284m 30m S 4.6 7.6 271:48.24 vs_exe
2473 xulun 20 0 118m 43m 6932 S 3.0 1.2 964:14.99 Xvnc
1412 xulun 30 10 232m 12m 5216 S 2.3 0.3 0:04.59 floaters
14823 chujie 20 0 1112m 247m 17m S 2.0 6.6 363:51.38 vs_exe
17772 sihao 20 0 1101m 202m 10m S 1.7 5.4 631:21.17 vs_exe
11054 sihao 20 0 906m 65m 9412 S 1.0 1.7 410:06.55 vs_exe
20782 yongtao 20 0 1049m 173m 9996 S 1.0 4.6 196:05.10 vs_exe
14637 chujie 20 0 1274m 132m 2388 S 0.7 3.5 63:20.18 KugooPopMsgServ
1439 yanyun 20 0 15428 1600 940 R 0.3 0.0 0:00.01 top
34 zhixiang 20 0 129m 55m 17m S 0.3 1.5 10:57.25 Xvnc
1 root 20 0 19344 1200 984 S 0.0 0.0 0:00.89 init
2.3命令输出解析
Top输出的信息很多基本囊括了所有的性能指标,前五行是统计信息区,表示的是系统整体的统计信息,包括:系统负载、任务、CPU、内存等;后面的是每个进程相关信息。
[yanyun@~/test]$ uptime
10:20:17 up 38 days, 15:52, 5 users, load erage: 0.00, 0.04, 0.03
其内容如下:10:20:17:当前时间
38 days, 15:52:系统运行时间
load erage: 0.00, 0.04, 0.03:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二行为进程的信息
内容如下:569 total:进程总数
2 running,:正在运行的进程数
562 sleeping:睡眠的进程数
0 stopped:停止的进程数
5 zombie:僵尸进程数
第三行为CPU的信息
内容如下:2.6%us:用户空间占用CPU百分比
1.3%sy:内核空间占用CPU百分比
0.4%ni:用户进程空间内改变过优先级的进程占用CPU百分比
0.0%wa:等待输入输出的CPU时间百分比
第四、五行为内存信息;命令输出跟free相同
[yanyun@~]$ free
total used free shared buffers cached
Mem: 38312 3256976 582136 0 143664 444992
-/+ buffers/cache: 2668320 1170792
Swap: 6078456 574772 5503684
内容如下:Mem :38312k total:物理内存总量
3151560k used:使用的物理内存总量
687552k free:空闲内存总量
302944k buffers:用作缓冲的内存量
631852k used:使用的交换区总量
5446604k free:空闲交换区总量
348548k cached:缓存总量。
注:buffer:可以认为是写出磁盘的缓冲区;
Cache:读出磁盘的缓存。
Linux系统使用内存的原则是:不用白不用,用了也白用;尽可能的缓存东西,所以往往看空闲内存很小,但是cache很大;Linux系统会定时启动内核线程kswapd进行缓存回收。
后面的是显示每个进程相关信息
TIME+:进程使用的CPU时间总计
%MEM:进程使用的物理内存百分比
VIRT:进程使用的虚拟内存总量,单位kb
RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:共享内存大小,单位kb
S:进程状态。(D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程)
2.4常用选项
参数说明:
d:指定每两次屏幕信息刷新之间的时间间隔。(top –d 1:每秒刷新一次)
p:指定进程ID来仅某个进程。(top –d 1234:只查看pid为1234的进程信息)
k:终止一个进程。Top运行时参数,系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。使用信号9强制结束该进程。
M:根据驻留内存大小进行排序。
P:根据CPU使用百分比大小进行排序。
注:在命令行执行过程中按下数字键‘1’,可以查看到CPU每个核的相关信息。
Tasks: 564 total, 3 running, 556 sleeping, 0 stopped, 5 zombie
Cpu0 : 2.9%us, 2.9%sy, 0.0%ni, 94.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 2.0%us, 2.0%sy, 0.0%ni, 96.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 38312k total, 3445296k used, 393816k free, 48180k buffers
Swap: 6078456k total, 553876k used, 5524580k free, 976128k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14823 chujie 20 0 1112m 245m 16m R 3.0 6.5 373:07.82 vs_exe
5589 sihao 20 0 1019m 267m 29m R 2.0 7.1 2:24.80 vs_exe
5674 zhixiang 20 0 1103m 253m 37m S 2.0 6.8 4:17.89 vs_exe
3 iotop:
3.1功能s采用程序信号的格式显示程序状况。
是一个用来监视每个线程的磁盘 I/O 使用状况的类top 工具,
注:此命令需要自行安装(yum install iotop)
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
61524 be/4 root 47.65 M/s 0.00 B/s 0.00 % 37.83 % ./relay_server
61539 be/4 root 121.77 K/s 0.00 B/s 0.00 % 26.73 % ./relay_server
61544 be/4 root 700.15 K/s 0.00 B/s 0.00 % 24.89 % ./relay_server
61543 be/4 root 528.92 K/s 0.00 B/s 0.00 % 21.29 % ./relay_server
61541 be/4 root 494.67 K/s 0.00 B/s 0.00 % 21.22 % ./relay_server
61540 be/4 root 323.44 K/s 0.00 B/s 0.00 % 8.62 % ./relay_server
61542 be/4 root 468.04 K/s 0.00 B/s 0.00 % 8.13 % ./relay_server
480 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.02 % [jbd2/sda2-8]
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
3.3命令输出解析
行:
Total DISK READ: 50.23 M/s :磁盘每秒读出数据量
Total DISK WRITE: 34.25 K/s :磁盘每秒写入数据量
下面的是每个线程的的IO情况:
比较简单;只解释一下IO:跟top的wa意义相同,只是此处表示的一个线程的wa。
3.4常用选项
iotop [-] [d] [p]
参数说明:
d:指定每两次屏幕信息刷新之间的时间间隔。(iotop –d 1:每秒刷新一次)
p:指定线程ID来仅某个线程。(iotop –d 1234:只查看pid为1234的进程信息)
注:在命令行执行过程中按下字母‘o’,可以只查看有IO的线程。
pstree -p:查看进程树,可以输出进程之间的关系。
ps –eLf:查看线程。ps –ef的高级版
4 vmstat:
4.1功能
查看虚拟内存(Virtual Memory)使用状况的工具
4.2命令输出示意图
[yanyun@~/test]$ vmstat
procs -----------memory---------- ---swap-- -----io---- ---- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 631376 834896 15108 452024 0 0 4 4 1 2 2 1 97 0 0
4.3命令输出解析
Memory:同top的第四、五行信息。
swap:内存到swap分区换入换出速率。
io:读写磁盘速率
in:每秒的中断数,包括时钟中断
cs:每秒的环境(上下文)切换数;频繁切换对系统性能有影响,linux提供了线程对cpu的亲和,可以将某个线程绑定到一个核运行。
注:swap项不为零,都用到交换分区了,内存可能已经用完已经成为系统瓶颈的一项。
4.4常用选项
vmstat 1 10:每秒刷新一次,总共刷新十次退出。
注:下面的选项都是专业的查看某一特定项的信息,有几个输出一大堆信息,用到时google吧!
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量
-m:显示slab
-s:显示内存相关统计信息及多种系统活动数量。
-d:显示磁盘相关统计信息。
5 iostat
5.1功能
用于输出CPU和磁盘I/O相关的统计信息
5.2输出结果示意图
Linux 2.6.32-279.el6.x86_64 (ShanWei_119_134_255_208) 07/30/2013 _x86_64_ (16 CPU)
g-cpu: %user %n % %iowait %steal %idle
2.63 0.00 2.25 5.98 0.00 89.14
Dev: rrqm/s wrqm/s r/s w/s rsec/s wsec/s grq-sz gqu-sz await svctm %util
sda 195.42 163.72 194.33 126.28 28464.35 2319.94 96.02 1.16 3.63 1.41 45.30
sdb 0.33 48.97 122.71 2.70 29603.37 413.38 239.34 0.27 2.15 1.00 12.52
5.3命令输出解释
g-cpu段:
%user: 在用户级别运行所使用的CPU的百分比.
%n: n作所使用的CPU的百分比.
%sys: 在系统级别(kernel)运行所使用CPU的百分比.
%iowait: CPU等待硬件I/O时,所占用CPU百分比.
%idle: CPU空闲时间的百分比.
Dev段:
tps: 每秒钟发送到的I/O请求数
Blk_read /s: 每秒读取的block数
Blk_wrtn/s: 每秒写入的block数
Blk_read: 读入的block总数
Blk_wrtn: 写入的block总数
-x选项可以查看到如下更多信息
rrqm/s:每秒这个设备相关的读取请求有多少被Merge了
wrqm/s:每秒这个设备相关的写入请求有多少被Merge了
rsec/s:每秒读取的扇区数
wsec/:每秒写入的扇区数
grq-sz: 平均每次设备I/O作的数据大小 (扇区)
await:平均每次设备I/O作的等待时间(单位是毫秒)
svctm: 平均每次设备I/O作的服务时间 (单位是毫秒)
%util:在统计时间内所有处理IO时间,所以该参数暗示了设备的繁忙程度
5.4常用选项
iostat -d 2 6:每隔2秒,显示一次设备统计信息.总共输出6次.
-x:查看设备的使用率、响应时间
6 dstat
6.1功能
是一个全能系统信息统计工具,只能对整个系统进行而不能对某一个进程或某一个程序进行深入分析;项包括:cpu、磁盘、内存、网卡、进程、系统(彩面linux下面不多见啊!)
6.2命令输出示意图
[root@ShanWei_119_134_255_208 ~]# dstat -cdlmnpy
----total-cpu-usage---- -dsk/total- ---load-g--- ------memory-usage----- -net/total- ---procs--- -----
usr sys idl wai hiq siq| read writ| 1m 5m 15m | used buff cach free| recv send|run blk new| int csw
3 2 89 6 0 0| 28M 1367k|5.41 5.07 4.87|4019M 172M 58.5G 267M| 0 0 | 0 0.0 1.3|8608 35k
1 1 80 18 0 0|5828k 4804k|5.41 5.07 4.87|4018M 172M 58.6G 260M| 190k 17M|2.0 3.0 0|5802 12k
6.3命令输出解释
前面基本都解释过了......
6.4常用选项
dstat –cdlmnpsy:cdlmnpsy这几个选项基本囊括了常用的,当然还有很多dstat –-一下吧。
7 sar
7.1功能
System Activity Reporter系统活动情况报告,是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
7.2命令输出示意图
[root@localhost ~]# sar -r 1 100
03:18:00 PM 4988488 3062224 38.04 6336 2115404 72404 0.44
03:18:01 PM 4984464 3066248 38.09 6336 2115404 98060 0.60
03:18:02 PM 4985152 3065560 38.08 6336 2115420 97972 0.60
03:18:03 PM 4985400 3065312 38.08 6336 2115420 97972 0.60
[root@localhost ~]# sar -B 1 100
03:19:09 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
03:19:10 PM 0.00 157.14 45415.48 0.00 15541.67 0.00 0.00 0.00 0.00
03:19:11 PM 0.00 0.00 40.40 0.00 75.76 0.00 0.00 0.00 0.00
03:19:12 PM 0.00 0.00 5542.34 0.00 1584.68 0.00 0.00 0.00 0.00
[root@localhost ~]# sar -b 1 100
03:19:38 PM tps rtps wtps bread/s bwrtn/s
03:19:39 PM 12.50 0.00 12.50 0.00 181.82
03:19:40 PM 0.00 0.00 0.00 0.00 0.00
03:19:41 PM 7.14 0.00 7.14 0.00 128.57
[root@localhost ~]# sar -W 1 100
03:20:10 PM pswpin/s pswpout/s
03:20:11 PM 0.00 0.00
03:20:13 PM 0.00 0.00
[root@localhost ~]# sar -d 1 100
03:20:48 PM DEV tps rd_sec/s wr_sec/s grq-sz gqu-sz await svctm %util
03:20:49 PM dev8-0 7.69 0.00 79.12 10.29 0.00 0.14 0.14 0.11
03:20:49 PM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
03:20:49 PM DEV tps rd_sec/s wr_sec/s grq-sz gqu-sz await svctm %util
03:20:50 PM dev8-0 10.47 0.00 148.84 14.22 0.08 7.22 7.11 7.44
03:20:50 PM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
7.3命令输出解释
kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.
%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.
kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.
pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflt/s:每秒钟产生的主缺页数.
pgscank/s:每秒被kswapd扫描的页个数
pgscand/s:每秒直接被扫描的页个数
Swap: 6078456k total:交换区总量pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数
%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比
tps:每秒钟物理设备的 I/O传输总量
rtps:每秒钟从物理设备读入的数据总量
wtps:每秒钟向物理设备写入的数据总量
bread/s:每秒钟从物理设备读入的数据量,单位为块/s
bwrtn/s:每秒钟向物理设备写入的数据量,单位为块/s
pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量
7.4常用选项
参数说明:
-u:CPU资源
-r:内存和交换空间
-B:内存分页
-b:IO和传输速率
-q:进程队列系统负载
-W:系统交换分区活动
-d:设备使用状况
8 tmpfs
8.1定义
8.2特点
动态改变大小;访问快、完全驻留在RAM中;当然系统重启就没了。
8.3使用方法
1、 linux下面POSIX标准的共享内存是基于此文件系统实现的(还有一套System V标准的共享内存实现方式);
2、 将文件创建在/dev/shm下面都将直接使用tmpfs;所以如果不需要考虑机器重启后数据的丢失,把数据放在这下面吧,释放你的磁盘压力!
3、 tmpfs的默认大小是物理内存的一半。将容量调到40G,并且文件节点数量调到1000000,可以通过下面的命令:
mount -o size=40G -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
4、如果需要修改tmpfs文件系统的大小,需要修改/etc/fstab
9 crontab:
9.1功能
定时调度一些命令的执行,相当于系统级别的定时器。在/var/spool/cron/有一些以用户名命名的文件,表示的是这个用户的定时执行任务。
9.2配置方法
格式说明:
/command path
前五个字段可以取整数值,指定何时开始工作(分钟 小时 日期 月份 星期),第六个域是字符串,到期执行的脚本、程序等
43 21 每天21:43 执行
0 17 1 每周一的 17:00 执行
0,10 17 0,2,3 每周日,周二,周三的 17:00和 17:10 执行
0 0 1,15 1 毎月1日和 15日和 一日的 0:00 执行
42 4 1 毎月1日的 4:42分 执行
0 21 1-6 周一到周六 21:00 执行
0,10,20,30,40,50 每隔10分 执行
/10 每隔10分 执行
1 从1:0到1:59 每隔1分钟 执行
0 1 1:00 执行
0 /1 毎时0分 每隔1小时 执行
0 毎时0分 每隔1小时 执行
2 8-20/3 8:02,11:02,14:02,17:02,20:02 执行
30 5 1,15 1日 和 15日的 5:30 执行
如下配置表示:每天3:00执行这个脚本/opt/ clear_old_file.sh;
这个脚本功能是:删除/data1 /data2这两个目录下的五天之内没有访问过的文件
0 3 (cd /opt/ ./clear_old_file.sh /dev/null )
#!/bin/sh
find /data1/ -type f -atime +5 -exec rm {} \;
find /data2/ -type f -atime +5 -exec rm {} \;
exit 0
10 proc:待续…
/proc 文件系统是 GNU/Linux 特有的。它是一个虚拟的文件系统,此文件系统完全驻留在RAM中,因此在该目录中的所有文件都不会消耗磁盘空间。通过它能够非常简便地了解系统中的内核信息、硬件信息等;还可以通过它进行系统内核的参数的配置。许多命令实际上只是从 /proc 的文件中收集信息,然后按照它们自己的格式组织后显示出来;像前面介绍的命令基本就是这么干的。
linux怎么查看线程cpu
-p:显示指定磁盘分区统计信息ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。
直接使用 ps Hh -eo pid,tid,pcpu | sort -nk3 |tail 获取对于的进程号和线程号,然后跳转到3.
查看哪个进程线程占用cpu过高; top / ps -aux, 获得进程号
确定哪个线程占用cpu过高,进入进程号的目录:/proc/pid/tas[root@ShanWei_119_134_255_208 ~]# iostat -xk,
执行:grep SleepAVG /status | sort -k2,2 | head, 确定cpu占用较高的线程号。
使用kill -3 pid 会打印线程堆栈的情况
在 Linux 下 top 工具可以显示 cpu 的平均利用率(user,n,,idle,iowait,irq,softirq,etc.),可以显示每个 cpu 的利用率。但是无法显示每个线程的 cpu 利用率情况,这时就可能出现这种情况,总的 cpu 利用率中 user 或 很高,但是用进程的 cpu 占用率进行排序时,没有进程的 user 或 与之对应。
linux进程线程数限制linux进程线程数
linux一个进程最多多少个线程?
以下是对在linux环境下一个进程最多能有多少个线程进行了介绍,需要的朋友可以过来参考下r默认情况下:r主线程+辅助线程+253个自己的线程=255r含主线程和一个辅助线程,最多255个,即你自己只能生成253个线程。r据说可以设置线程数目:r据说是可以设置的,但本人还没有验证!不知道可否。r在你的shell中键入limit命令,里面有descriptor的数目,就是你的进程可以创建的线程数目。可以通过修改内核文件更改该数目。
linux线程数?
默认情况下:
主线程+辅助线程+253个自己的线程
含主线程和一个辅助线程,最多255个,即一个用户只能生成253个线程。
1、总结系统限制有:
/proc/sys/kernel/pid_max#查系统支持的线程数,长格式(有F,wchan,C一般会很大,相当于理论值
/proc/sys/kernel/thread-max
max_user_process(ulimit-u)#系统限制某用户下最多可以运行多少进程或线程
/proc/sys/vm/max_map_count
硬件内存大小
linux最多支持多少个线程?4)ps
以下是对在linux环境下一个进程最多能有多少个线程进行了介绍,需要的朋友可以过来参考下r默认情况下:r主线程+辅助线程+253个自己的线程=255r含主线程和一个辅助线程,最多255个,即你自己只能生成253个线程。r据说可以设置线程数目:r据说是可以设置的,但本人还没有验证!不知道可否。r在你的shell中键入limit命令,里面有descriptor的数目,就是你的进程可以创建的线程数目。可以通过修改内核文件更改该数目。
Linux如何查看线程数解决方案?
1、top-H手册中说:-H:Threadstoggle加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。
2、psxH手册中说:HShowthreadsasiftheywereprocesses这样可以查看所有存在的线程。
3、ps-mp
Linux怎03:20:12 PM 0.00 0.00么增大可以创建的线程数?
检查ulimit-a的结果,查看stacksize:
stacksize(kbytes,-s)8192
8192KB就是栈的大小。不能超过这个栈的数目,因此上面2)分配的buf大小超过了栈限制,得到了setmentationfault。
LInux上,线程数目是:
numberofthreads=totalvirtualmemory/(stacksize10241024)
在32位系统上,进程空间是4G,其中0-3G是用户空间(0x0-0xBFFFFFFF),3G-4G是内核空间。
因此理论上讲,用户空间大小/栈大小=线程数。3072M/8M=384,考虑到系统的占用,主线程等,我的系统上是380.也许在你的系统上是382.
我们可以减小栈限制或者增大虚拟内存使得线程的数目增加。
检查虚拟内存:ulimit-v
检查栈大小:ulimit-s
设置虚拟内存:ulimit-v新值
idle process占用CPU过高,有什么办法可以查看线程?
pgfree/s:每秒被放入空闲队列中的页个2 1 85 12 0 0| 21M 828k|5.41 5.07 4.87|4020M 172M 58.6G 243M| 1k 15M| 0 6.0 0|5711 18k数下面的命令将 cpu 占用率高的线程找出来:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。
解决CPU资源占用的方法
1、驱动没有经过认证,造成CPU资源占用。 大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。
2、杀毒软件CPU使用率占用指定终端机编号,并列出属于该终端机的程序的状况。
3、、木马造成。
查看linux进程使用多少线程
e;问题: 我的程序在其内部创建并执行了多个线程,我怎样才能在该程序创建线程后其中单个线程?我想要看到带有它们名称的单个线程详细情况(如,CPU/内存使用率)。
0-10 17 1 毎月1日从 17:00到7:10 毎隔1分钟 执行线程是现代作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享
top [-] [d][p][M][P]特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的IPC(进程间通信)通道。这些功能让线程在并发执行时成为一个高
效的机制。
在Linux中,程序中创建的线程(也称为轻量级进程,LWP)会具有和程序的PID相同的“线程组ID”。然后,各个线程会获得其自身的线程
ID(TID)。对于Linux内核调度器而言,线程不过是恰好共享特定资源的标准的进程而已。经典的命令行工具,如ps或top,都可以用来显示线程级
别的信息,只是默认情况下它们显示进程级别的信息。
这里提供了在Linux上显示某个进程的线程的几种方式。
方法一:PS
在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为
的进程创建的所有线程。
1.$ ps -T -p
“SID”栏表示线程ID,而“CMD”栏则显示了线程名称。
方法二: Top
top命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行时,你也可以通过按“H”键将线程查看模式切换为开或关。
1.$ top -H
要让top输出某个特定进程
并检查该进程内运行的线程状况:
$ top -H -p
方法三: Htop
要在htop中启用线程查看,请开启htop,然后按
现在,你就会看到下面这样单个进程的线程视图。
linux下,如何查看工控机的串口被哪个线程占用,能否使该线程强制释放串口
现在的杀毒软件一般都加入了,对网页、邮件、个人隐私的即时监空sar –[u][r][B][b][q][W][d]功能,这样无疑会加大系统的负担。比如:在玩游戏的时候,会非常缓慢。关闭该杀毒软件是解决得最直接办法。ps axl |grep ttyS (串口)
-xps axl |grep ttyUSB (u串口)
[root@localhost ~]# ps axl |grep ttyS
0 0 1558 1534 20 0 116264 3044 poll_s S+ tty1 0:00 minicom -b 9600 -D ttyS0
0 0 1655 1637 20 0 112704 972 pipe_w S+ pts/0 0:00 grep --color=auto ttyS
-----------------------------------------
minicom ttyS0 1558 (第三列为进程号)
CPUZ检测后 线程数和核心数都是1
看看这两个in的双核四gqu-sz: 平均I/O队列长度线程技术,in的cpu有双线程技术,也就是一个核心可以分成两条路径来走,提高效率,一个核心当做两个核心干活。也是人们通常所说的
使用的调度策略,它们是:SCHED_FIFO, SCHED_RR 和 SCHED_OTHER。在ubunt,Linu系统上如何察看系统中运行的所有进程、线程列表,如何察看调度策略以及优先级
设置栈大小:ulimit-s新值查看所有进程命令: ps ax
线程是在进程中创建的,需要在运行程序中加入以下代码确认。
1. int pthread_attr_getschedpolicy(const pthreadtmpfs文件系统行是任务队列信息,同uptime命令的执行结果是一样的是一种基于内存的文件系统,挂载在/dev/shm下面。_attr_t attr, int policy);函数来获取所
2. 我们可以使用
int sched_get_priority_max(int policy);
int sched_get_priority_min(int policy);
来获取线程线程可是设置的和最小的优先级值,如果调用成功就返回和最小的优先级值,否则返回-1。
如何在Linux中查看进程的多线程
方法/步骤
问题: 我的程序在其内部创建并执行了多个线程,我怎样才能在该程序创建线程后其中单个线程?我想要看到带有它们名称的单个线程详细情况(如,CPU/内存使用率)。
线程是现代作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享 特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的IPC(进程间通信)通道。这些功能让线程在并发执行时成为一个高 效的机制。
在Linux中,程序中创建的线程(也称为轻量级进程,LWP)会具有和程序的PID相同的“线程组ID”。然后,各个线程会获得其自身的线程 ID(TID)。对于Linux内核调度器而言,线程不过是恰好共享特定资源的标准的进程而已。经典的命令行工具,如ps或top,都可以用来显示线程级 别的信息,只是默认情况下它们显示进程级别的信息。
这里提供了在Linux上显示某个进程的线程的几种方式。
方法一:PS
在ps命令中,“-T”选项可以开启线程查看。下面的命令列1.运行“perfmon”打开性能管理,右击右窗格选择“添加计数器”,在“性能对象”下拉菜单中选择“线程”,“从列表中选择范例”选中所有Syetem的线程(如System/0、System/nnn),然后添加到图表中。出了由进程号为
的进程创建的所有线程。
1.$可以用下面的命令将 cpu 占用率高的线程找出来: ps -T -p
“SID”栏表示线程ID,而“CMD”栏则显示了线程名称。
方法二: Tops -lp
top命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行时,你也可以通过按“H”键将线程查看模式切换为开或关。
1.$ top -H
要让top输出某个特定进程
并检查该进程内运行的线程状况:
$ top -H -p
方法三: Htop
要在htop中启用线程查看,请开启htop,然后按
5现在,你就会看到下面这样单个进程的线程视图。
使用ps -ef可以看到每个进程以及他的子进程
linux 怎么查看某个进程的启动命令
Total DISK READ: 50.23 M/s | Total DISK WRITE: 34.25 K/stop命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行时,你也可以通过按“H”键将线程查看模式切换为开或关。
1.$ top -H
要让top输出某个特定进程
并检查该进程内运行的线程状况:
$ top -H -p伪四核。
4方法三: Htop
要在htop中启用线程查看,请开启htop,然后按
linux查看线程优先级命令
95.7%id:空闲CPU百分比用top或者ps -l查看一个对用户更加友好的方式是,通过htop查看单个进程的线程,它是一个基于ncurses的交互进程查看器。该程序允许你在树状视图中单个线程。进程会发现有PR(PRI) NI两个字段:
orNI 是优先值,是用户层面的概念, PR是进程的实际优先级, 是给内核(kernel)看(用)的。
一般情况下,PR=NI+20, 如果一个进程的优先级PR是20, 那么它的NI(n)值就是20-20=0。
进程调度优先级是从-20到19,一共40个级别,数字越大,表示进程的优先级越低。默认时候,进程的优先级是0。查看进程优先级有两个办法:ps和top。top命令显示的NI列的值。或者可以使用ps -efl来查看,也是在ni列表示了进程的优先级。《Linux就该这么学》 一起学习,进程的优先级可以在程序运行的时候设置,也可以在程序运行过程中动态的修改。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 12345678@qq.com 举报,一经查实,本站将立刻删除。