CPU的us和sy高对于JAVA应用来说分别意味着什么?

以下内容来自林昊的《分布式JAVA应用》

us高代表用户态程序占CPU的比例较高

sy高代表内核态程序占CPU的比例较高

对java应用来说,

us高一般是因为

   1. 有些线程一直处于可运行状态,比如使劲循环

   2. CPU密集型操作太多,比如正则运算

   3. 频繁GC

sy高一般是因为线程上下文切换过于频繁。而切换过多,一般是由于过多阻塞导致的,包括锁等待、I/O阻塞等,一个线程的阻塞会导致CPU让另一个线程上位,即上下文切换。

p.s. sy高跟系统调用过多也会有关系

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.