码迷,mamicode.com
首页 > 其他好文 > 详细

Context Switching Cost

时间:2017-09-08 21:44:35      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:contexts   contex   mis   miss   执行   nat   hat   频繁   重要   

   锁为什么耗性能:

 1. 每个线程在被cpu执行的时候, 都会给这个线程分配一定的时间让这个线程执行, 这段时间不会被信号中断.

 2. 在获取锁的时候, 如果竞争很激烈, 这个线程会被挂起, 所以, 如果获取锁的操作很多, 这个线程就会频繁被挂起, 无法利用完cpu分配给它的时间, 时间都浪费

在了contextSwitch 上, 所以说, 获取锁是比较费时的操作

3. contextSwith 的耗时大概是5,000 to 10,000 clock cycles or several microseconds on most current processors.

The  vmstat   command  on  Unix  systems  and  the  perfmon   tool  on  Windows  systems  report  the  number  of  context
switches and the percentage of time spent in the kernel. High kernel usage (over 10%) often indicates heavy scheduling
activity, which may be caused by blocking due to I/O or lock contention.

用top也可以

锁的消耗也分竞争激烈的锁和竞争不激烈的锁, 竞争不激烈的锁消耗会比较小. 竞争太激烈的话, 会导致很多线程会被os挂里, 有相应的contextSwitch 的操作, cache miss的操作, os的算法,对os的通知等等 所以竞争激烈不激烈也比较重要

There are three ways to reduce lock contention:
? Reduce the duration for which locks are held;
? Reduce the frequency with which locks are requested; or
? Replace exclusive locks with coordination mechanisms that permit greater concurrency.

Context Switching Cost

标签:contexts   contex   mis   miss   执行   nat   hat   频繁   重要   

原文地址:http://www.cnblogs.com/zhaoxinshanwei/p/7496281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!