cpu执行Java程序,其根本是执行java代码编译后的操作系统可以识别的指令,cpu执行一条指令的时间是ns级别的(1.6G的cpu执行一条指令,大概需要0.6ns),而cpu上下文切换则需要2万个CPU时间周期
/proc/sys/kernel/thread-max 系统可以生成最大线程数量
/proc/sys/kernel/pid_max 增大,线程数量增大,pid_max有最高值,超过之后不再改变,而且32,64位也不一样
查看有哪些flag选项
jinfo -flags pid
查看jvm各个配置的值
jinfo -flag ThreadStackSize pid
一般情况程序线程数等于cpu线程数的两到三倍就能很好的利用cpu了,过多的程序线程数不但不会提高性能,反而还会因为线程间的频繁切换而受影响,具体需要根据线程处理的业务考略,不断调整线程数个数,确定当前系统最优的线程数
查看某个进程的线程栈设置大小
jinfo -flag ThreadStackSize pid
进程/线程上下文切换会用掉你多少CPU?
Tools for Performance Analysis
原文:https://www.cnblogs.com/shengulong/p/11729847.html