并发和任务调度的高级知识点
2014-11-11 23:11
169 查看
1、CAS : Compare And Swap/Set
2、Memory Barrier: 内存栅栏,这是一个CPU级的指令,比锁的开销要小
3、Cache Line:
cpu中普遍的cache line为64 bytes,所有补齐朝采用64byte。
jvm中 所有对象有2个word的header,每个word 为4 byte,所以共8byte。
为了在packing的时候更高效,对象的field被从定义顺序(基于字节大小)按下列顺序重排:
1.doubles(8) and longs(8)
2.ints(4) and floats(4)
3.shorts(2) and chars(2)
4.booleans(1) and bytes(1)
5.references(4/8)
6.<repeat for sub-class fields>
所以我们补齐cache line:在任意field之间补上7个long(8)
4、CPU False Sharing(伪共享):
5、CPU Affinity(亲缘性):
按照默认设置,当系统将线程分配给处理器时,如果所有其他因素相同的话,它将设法在它上次运行的那个处理器上运行线程。让线程留在单个处理器上,有助于重复使用仍然在处理器的内存高速缓存中的数据。
计算机在引导时,系统要确定机器中有多少个CPU可供使用。按照默认设置,任何线程都可以调度到这些CPU中的任何一个上去运行。为了限制在可用C P U的子集上运行的单个进程中的线程数量,可以调用SetProcessAffinityMask。子进程可以继承进程的亲缘性。此外,可以使用作业内核对 象将一组进程限制在要求的一组CPU上运行。
在大多数环境中,改变线程的亲缘性就会影响调度程序有效地在各个CPU之间移植线程的能力,而这种能力可以最有效地使用CPU时间。
5、SMP:Symmetrical Multi-Processing,对称多处理技术,是指在一个计算机上灰机了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。
要实现SMP,对CPU也有要求
5.1 CPU内部必须内置APIC,Advanced Programmable Inteerrupt Controllers 可编程中断控制器,CPU通过彼此发送中断来完成他们之间的通信。
5.2 相同的产品型号,这样可以保证指令完全一样
5.3 完全相同的运行频率
5.4 尽可能保持相同的产品序列编号
6、Mechanical Sympathy:Hardware and software working together in harmony,讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。(注解:sympathy这里是共鸣、一致的含义),也就是说软件的编程方式要考虑到硬件的系统结构,如果不遵循相关硬件架构,可能导致的代价非常大。就算有了合适的算法,也可能导致低效的性能。(Martin Thompson很喜欢用Mechanical Sympathy这个短语,这个短语源于赛车驾驶,它反映了驾驶员对于汽车有一种天生的感觉,所以他们对于如何最佳的驾御它非常有感觉。)
7、Thread.yield() |
2、Memory Barrier: 内存栅栏,这是一个CPU级的指令,比锁的开销要小
3、Cache Line:
cpu中普遍的cache line为64 bytes,所有补齐朝采用64byte。
jvm中 所有对象有2个word的header,每个word 为4 byte,所以共8byte。
为了在packing的时候更高效,对象的field被从定义顺序(基于字节大小)按下列顺序重排:
1.doubles(8) and longs(8)
2.ints(4) and floats(4)
3.shorts(2) and chars(2)
4.booleans(1) and bytes(1)
5.references(4/8)
6.<repeat for sub-class fields>
所以我们补齐cache line:在任意field之间补上7个long(8)
4、CPU False Sharing(伪共享):
5、CPU Affinity(亲缘性):
按照默认设置,当系统将线程分配给处理器时,如果所有其他因素相同的话,它将设法在它上次运行的那个处理器上运行线程。让线程留在单个处理器上,有助于重复使用仍然在处理器的内存高速缓存中的数据。
计算机在引导时,系统要确定机器中有多少个CPU可供使用。按照默认设置,任何线程都可以调度到这些CPU中的任何一个上去运行。为了限制在可用C P U的子集上运行的单个进程中的线程数量,可以调用SetProcessAffinityMask。子进程可以继承进程的亲缘性。此外,可以使用作业内核对 象将一组进程限制在要求的一组CPU上运行。
在大多数环境中,改变线程的亲缘性就会影响调度程序有效地在各个CPU之间移植线程的能力,而这种能力可以最有效地使用CPU时间。
5、SMP:Symmetrical Multi-Processing,对称多处理技术,是指在一个计算机上灰机了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。
要实现SMP,对CPU也有要求
5.1 CPU内部必须内置APIC,Advanced Programmable Inteerrupt Controllers 可编程中断控制器,CPU通过彼此发送中断来完成他们之间的通信。
5.2 相同的产品型号,这样可以保证指令完全一样
5.3 完全相同的运行频率
5.4 尽可能保持相同的产品序列编号
6、Mechanical Sympathy:Hardware and software working together in harmony,讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。(注解:sympathy这里是共鸣、一致的含义),也就是说软件的编程方式要考虑到硬件的系统结构,如果不遵循相关硬件架构,可能导致的代价非常大。就算有了合适的算法,也可能导致低效的性能。(Martin Thompson很喜欢用Mechanical Sympathy这个短语,这个短语源于赛车驾驶,它反映了驾驶员对于汽车有一种天生的感觉,所以他们对于如何最佳的驾御它非常有感觉。)
7、Thread.yield() |
java.util.concurrent.locks.LockSupport.park() / unPark(Thread);
相关文章推荐
- [ASP.NET MVC 大牛之路]03 - C#高级知识点概要(2) - 线程和并发
- JDBC第四章知识点总结——JDBC高级特性2--事务,并发控制,行集
- laravel框架-任务调度-知识点总结
- JDBC第四章知识点总结——JDBC高级特性2--事务,并发控制,行集
- java多线程并发executorservice(任务调度)类
- 分布式任务并发调度
- [ASP.NET 大牛之路]03 - C#高级知识点概要(2) - 线程和并发
- Java并发定时任务调度之Timer和ScheduledExecutorService
- Java并发编程高级篇(七):使用执行器周期性地执行任务
- [ASP.NET MVC 大牛之路]03 - C#高级知识点概要(2) - 线程和并发
- Java并发编程高级篇(六):在执行器中延时执行任务
- 基于嵌入式操作系统VxWorks的多任务并发程序设计(3)――任务调度
- [ASP.NET MVC 大牛之路]03 - C#高级知识点概要(2) - 线程和并发
- Oracle任务调度的高级选项
- [ASP.NET MVC 大牛之路]03 - C#高级知识点概要(2) - 线程和并发
- Java并发编程高级篇(五):运行多个任务并处理所有结果
- java并发高级知识点-Lock接口说明
- Java并发编程高级篇(四):运行多个任务并处理第一个结果
- [ASP.NET MVC 大牛之路]02 - C#高级知识点概要(2) - 线程和并发
- java并发高级知识点-Condition接口说明