Java 中 Thread类 的各种操作与线程的生命周期密不可分,了解线程的生命周期有助于对Thread类中的各方法的理解。一般来说,线程从最初的创建到最终的消亡,要经历创建、就绪、运行、阻塞 和 消亡 五个状态。在线程的生命周期中,上下文切换通过存储和恢复CPU状态使得其能够从中断点恢复执行。结合 ...
分类:
编程语言 时间:
2019-08-29 22:52:50
阅读次数:
89
恢复内容开始 python的多线程实际上只有一个线程。 了让各个线程能够平均利用CPU时间,python会计算当前已执行的微代码数量,达到一定阈值后就强制释放GIL。而这时也会触发一次操作系统的线程调度(当然是否真正进行上下文切换由操作系统自主决定)。 GIL全局解释器锁: 保证同一时间只有一个线程 ...
分类:
编程语言 时间:
2019-08-23 12:01:46
阅读次数:
89
一、top之负载高 top -H -p pid 首先看load average 数值若小于0.7*CPU个数,则系统工作正常,如果超过这个值,甚至达到cpu核数的四五倍,则系统的负载就说明偏高且存在进一步升高的趋势,就需要进一步定位具体原因。通过vmstat命令查看cpu的上下文切换次数,上下文切换 ...
分类:
编程语言 时间:
2019-08-22 18:40:29
阅读次数:
170
1.什么是上下文?答:上下文是由CPU寄存器和程序计数器组成2.CPU为什么进行上下文切换?答:CPU上下文切换,是保证Linux系统正常工作的核心功能之一3.什么是CPU上下文切换?答:CPU上下文切换,就是先把前一个任务的CPU上下文保存起来,然后加载新任务的上下文到这些寄存器和程序计数器中,最后跳转到程序计数器所指的新位置,运行任务4.什么是cpu寄存器?答:cpu寄存器是cpu内置很小、但
分类:
其他好文 时间:
2019-08-22 10:41:22
阅读次数:
82
linux操作系统是将CPU轮流分配给任务,分时执行的。而每次执行任务时,CPU需要知道 CPU寄存器 (CPU内置的内存)和 程序计数器PC (CPU正在执行指令和下一条指令的位置)值,这些值是CPU执行任务所依赖的环境,也就是 CPU上下文 。 ...
分类:
系统相关 时间:
2019-08-20 22:38:54
阅读次数:
141
监控对象1.监控对象的理解2.监控对象的指标3.确定性能基准线 例如: CPU是怎么工作的。原理CPU使用率 CPU负载 CPU个数 上下文切换怎么样才算故障?CPU负载多少才算高 监控范围1.硬件监控 服务器的硬件故障2.操作系统监控 CPU 内存 IO 进程3.应用服务监控4.业务监控 (登记 ...
分类:
其他好文 时间:
2019-07-28 00:10:11
阅读次数:
125
内存使用量少,几k vs 至少1MB 可增长的分段堆栈 启动时间比线程快 在共享数据结构时避免使用互斥锁 https://medium.com/@kevalpatel2106/why-should-you-learn-go-f607681fad65 非常快速的上下文切换 没有并发问题 选择您的调度程 ...
分类:
编程语言 时间:
2019-07-27 09:44:38
阅读次数:
398
怎么查看系统的上下文切换情况 过多的上下文切换,会把 CPU 时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,缩短进程真正运行的时间,成了系统性能大幅下降的一个 元凶。 使用 vmstat 这个工具,来查询系统的上下文切换情况。 vmstat 是一个常用的系统性能分析工具,主要用来分析系统 ...
分类:
其他好文 时间:
2019-07-13 09:17:59
阅读次数:
117
redis单线程,为什么比较快 单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。redis能够快速执行的原因有三点: (1) 绝大部分请求是纯粹的内存操作(非常快速) (2) 采用单线程,避免了不必要的上下文切换和竞争条件 (3) ...
分类:
其他好文 时间:
2019-07-12 12:36:31
阅读次数:
86
线程同步条件 形成队列+锁机制 问题 上下文切换和调度延时,引起性能问题。 如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置。 synchronnized synchronnized方法和synchronnized块 目标要对+效率要高 同步方法:锁的是对象的资源 如果要锁的不变量 ...
分类:
编程语言 时间:
2019-07-02 21:01:45
阅读次数:
113