扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
找到最耗CPU的java线程
平湖ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
ps命令
命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid
结果展示:
这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息。 比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Thread的占用CPU的时间,也就是这里的最后一列。
比如这里找到了一个TID : 30834 ,所占用的TIME时间最高。
通过 printf “%x\n” 30834 首先转化成16进制, 继续通过jstack命令dump出当前的jvm进程的堆栈信息。 通过Grep命令即可以查到对应16进制的线程id信息,很快就可以找到对应最耗CPU的代码快在哪。
简单的解释下,jstack下这一串线程信息内容:
Java代码
“DboServiceProcessor-4-thread-295” daemon prio=10 tid=0x00002aab047a9800 nid=0x7d9b waiting on condition [0x0000000046f66000]
nid : 对应的linux操作系统下的tid,就是前面转化的16进制数字
tid: 这个应该是jvm的jmm内存规范中的唯一地址定位,如果你详细分析jvm的一些内存数据时用得上,我自己还没到那种程度,所以先放下
top命令
命令:top -Hp pid
结果显示:
和前面的效果一下,你可以实时的跟踪并获取指定进程中最耗cpu的线程。 再用前面的方法提取到对应的线程堆栈信息。
判断I/O瓶颈
mpstat命令
命令:mpstat -P ALL 1 1000
结果显示:
注意一下这里面的%iowait列,CPU等待I/O操作所花费的时间。这个值持续很高通常可能是I/O瓶颈所导致的。
通过这个参数可以比较直观的看出当前的I/O操作是否存在瓶颈
升级内核:
1.这里我用的内核是linux-2.6.32.59 版本的,首先下载这个内核
2.下载完毕之后拷贝到Linux中进行解压,tar jxvf linux-2.6.32.59.tar
3.进入linux-2.6.32.59 目录把当前内核的配置文件拷贝到当前目录下cp /boot/config-2.6.18-238.e15 。/.config 因为我当前用的内核是linux-2.6.18版本的`
4.在配置视频所需要的驱动 make menuconfig 进入之后找到Device Drivers 按回车进入 找到MultiMedia Support先按空格键进行选中 再按回车键进入找到 Video For Linux 按回车键选中 再按空格键选中 Video capture adapters 将此选项选中之后按回车键进入找到V4L USB devices 按空格键选中再按回车键进入 找到USB ZC0301[P] ImageProcessor and Control Chip support 按空格键选中 再找到《M》GSPCA based webcamsà先按空格键选中再按回车键进入在最后一项的菜单下选中ZC3XX USB Camera Driver
5.以上配置好之后再次回到顶层菜单,找到General setup-à按回车键进入找到[]enable deprecated sysfs features which may confuse old usersp 按空格键选中
6.经过4 ,5 两步骤已经将视频的驱动配置好退出保存
7.下面进行编译 make 此步骤大概需要一个小时左右
8.再次进行 make modules_install
9.再次进行 make install
10.此时查看将摄像头插入USB 再次查看设备文件中是否已经有了 video0 用ls /dev/ 命令查看
11.如果有说明安装成功
下面是将摄像头的内容显示出来
1首先安装SDL库在此下载
2.进行解压tar zxvf SDL-1.2.15.tar
3.进入目录 cd SDL-1.2.15 再进入 test目录 cd test 在test 目录下配置 。/configure再进行make 则会有许多编译好的程序随便运行一个试试
4.在我上传的资料文件夹中找到servfox-R1_1_3 文件夹进入之后首先将Makefile.i386的名字改为 Makefile ,
5.编译 make
6. 在我上传的资料文件夹中找到spcaview-20061208 文件夹进入之后直接make
7.之后将摄像头插入到USB 接口首先运行servfox-R1_1_3 文件夹中的servfox。/servfox 如果提示出现错误则要把打印的错误语句在spcav4l.c中找到将错误信息删除知道没有错误出现,再次运行。/servfox -g –w 127.0.0.1:7070 –d /dev/video0
8. 再次运行spcaview 。/ spcaview –g –w 127.0.0.1:7070此时应该在你的虚拟机上就会显示摄像头拍出来的视频注意此时的项目支持网络
在 Linux 中禁用内置摄像头
首先,使用如下命令找到网络摄像头驱动:
$ sudo lsmod | grep uvcvideo
示例输出:
uvcvideo 114688 1
videobuf2_vmalloc 16384 1 uvcvideo
videobuf2_v4l2 28672 1 uvcvideo
videobuf2_common 53248 2 uvcvideo,videobuf2_v4l2
videodev 208896 4 uvcvideo,videobuf2_common,videobuf2_v4l2
media 45056 2 uvcvideo,videodev
usbcore 286720 9 uvcvideo,usbhid,usb_storage,ehci_hcd,ath3k,btusb,uas,ums_realtek,ehci_pci
这里,uvcvideo 是我的网络摄像头驱动。
现在,让我们禁用网络摄像头。
为此,请编辑以下文件(如果文件不存在,只需创建它):
$ sudo nano /etc/modprobe.d/blacklist.conf
添加以下行:
##Disable webcam.
blacklist uvcvideo
##Disable webcam 这行不是必需的。为了便于理解,我添加了它。
保存并退出文件。重启系统以使更改生效。
要验证网络摄像头是否真的被禁用,请打开任何即时通讯程序或网络摄像头软件,如 Cheese 或 Guvcview。你会看到如下的空白屏幕。
Cheese 输出:
Guvcview 输出:
看见了么?网络摄像头被禁用而无法使用。
要启用它,请编辑:
$ sudo nano /etc/modprobe.d/blacklist.conf
注释掉你之前添加的行。
##Disable webcam.
#blacklist uvcvideo
保存并关闭文件。然后,重启计算机以启用网络摄像头。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流