《Java并发编程的艺术》读书笔记一ITeye - AG环亚娱乐集团

《Java并发编程的艺术》读书笔记一ITeye

2019-01-12 04:44:38 | 作者: 景中 | 标签: 履行,线程,咱们 | 浏览: 1895

上下文切换

线程履行时需求分配CPU资源,CPU依照时刻片分给线程履行,在线程时刻片用完的情况下,需求保存现场,将履行权转让给其他线程。当该线程从头有时机履行时,需求加载之前的现场信息,然后履行。

从保存现场 到下次加载履行, 便是一次上下文切换,英文叫: context switch

在linux中,能够经过vmstat来检查体系的context switch次数:

  System
  in: The number of interrupts per second, including the clock.
  cs: The number of context switches per second.

咱们看到此刻OS的cs根本在1000以内。


procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 404644 66656 619388 0 0 0 20 157 309 1 0 99 1 0
0 0 0 404644 66656 619396 0 0 0 0 192 529 2 2 97 0 0
0 0 0 404644 66656 619396 0 0 0 0 516 1573 8 5 88 0 0
0 0 0 404644 66656 619396 0 0 0 0 610 656 3 4 93 0 0
0 0 0 404644 66656 619396 0 0 0 0 480 575 2 2 96 0 0
0 0 0 404644 66656 619396 0 0 0 0 841 1238 3 4 93 0 0
0 0 0 404644 66656 619396 0 0 0 0 465 570 2 5 93 0 0



咱们履行一个java程序,2个线程彼此等候履行唤醒,持续调查context。

此刻发现cs根本都在2W多.

别的,发现in也许多,in是中止次数,由于咱们用了LockSupport.

r b swpd free buff cache si so bi bo in cs us sy id wa st
 1 0 0 397152 66808 619640 0 0 0 0 20800 83443 15 32 53 0 0
1 0 0 397152 66808 619640 0 0 0 0 29901 62160 2 26 72 0 0
1 0 0 397152 66808 619640 0 0 0 0 24617 51618 2 21 77 0 0
1 0 0 397152 66816 619632 0 0 0 48 26312 54760 1 26 74 0 0
1 0 0 397152 66816 619640 0 0 0 0 27106 58009 1 22 77 0 0
1 0 0 397152 66816 619640 0 0 0 0 27557 57114 2 23 75 0 0
1 0 0 397152 66816 619640 0 0 0 0 23964 49911 1 20 78 0 0
1 0 0 397152 66816 619640 0 0 0 0 21619 45313 1 23 76 0 0
2 0 0 397028 66816 619640 0 0 0 0 23673 53251 4 20 75 0 0
1 0 0 397028 66824 619632 0 0 0 12 21042 52601 8 26 66 1 0
1 0 0 396508 66824 619640 0 0 0 0 29707 60314 3 22 75 0 0


一起咱们看到,CPU的使用率上,20+% 都用于sys,阐明context switch在糟蹋CPU
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章