《Java Concurrency in Practice》ch11 Performance and Scalability

原创 2012年03月21日 22:26:23

1. 没有免费的午餐

While the goal may be to improve performance overall, using multiple threads always introduces some performance costs compared to the single-threaded approach. These include the overhead associated with coordinating between threads (locking, signaling, and memory synchronization), increased context switching, thread creation and teardown, and scheduling overhead.

当发现内核CPU占用率较高(>10%),通常表示调度活动发生的很频繁,这很可能是由I/O或者竞争锁导致的阻塞引起的(When a thread blocks because it is waiting for a contended lock, the JVM usually suspends the thread and allows it to be switched out)。

可以使用vmstat/mpstat命令查看CPU使用率,如下:

/home/a/j/nomad2:vmstat 1
 kthr      memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr s0 s1 -- --   in   sy   cs us sy id
 0 0 0 8011960 6610640 15 13 0  0  0  0  0  0  0  0  0  299  118   84  0  0 100
 0 0 0 6795008 5783928 0 10  0  0  0  0  0  0  4  0  0  410  338  214  0  0 100
 0 0 0 6794944 5783864 0  2  0  0  0  0  0  0  0  0  0  389  284  192  0  0 100
 0 0 0 6794944 5783864 0  0  0  0  0  0  0  0  0  0  0  362  249  162  0  0 100
 0 0 0 6794944 5783864 0  0  0  0  0  0  0  0  0  0  0  380  246  172  0  0 100

2. 什么是可伸缩性

Scalability describes the ability to improve throughput or capacity when additional computing resources (such as additional CPUs, memory, storage, or I/O bandwidth) are added.

3. 避免不成熟的优化

Avoid premature optimization. 

在对性能的调优时,一定要有明确的性能需求(这样才能知道什么时候需要调优,什么时候应该停止),此外还要一个测试程序以及真实的配置和负载等环境。以测试为基础,不要猜测。
It is therefore imperative that any performance tuning exercise be accompanied by concrete performance requirements (so you know both when to tune and when to stop tuning) and with a measurement program in place using a realistic configuration and load profile. Measure, don't guess.

4. Amdahl定律

在N个处理器的机器中,最高的加速比,F为串行执行部分的比率

5.  监测CPU的利用率

如果CPU没有得到充分利用,通常有以下原因:

1) Insufficent load.
2) I/O-bound.
3) Externally bound. 
4) Lock contention.

《Java Concurrency in Practice》中文版笔记

第1章 简介1.1 并发简史 茶壶和面包机的生产商都很清楚:用户通常会采用异步方式来使用他们的产品,因此当这些机器完成任务时都会发出声音提示。 1.2 线程的优势 线程能够将大部分的异步工作流转换成串...
  • youngsend
  • youngsend
  • 2015年09月12日 22:44
  • 2172

Java Concurrency in Practice学习笔记

学习Java并发编程的读书笔记
  • Wsky51
  • Wsky51
  • 2017年06月08日 18:31
  • 229

Java并发编程实践(Java concurrency in practice)在线示例学习

学习Java并发编程,这里提供一个快速学习通道:http://jcip.net.s3-website-us-east-1.amazonaws.com/,在这里你可以快速地获取到学习资源代码示例。 ...
  • boonya
  • boonya
  • 2015年03月19日 20:55
  • 1101

Java Concurrency In Practice 阅读笔记(第一、二部分)

第一章:简介 1.1 并发简史 促使进程出现的因素:资源利用率、公平性以及便利性等。这些因素同样也促使着线程的出现。线程允许同一个进程中同时存在多个程序控制流。线程会共享进程范围内的资源,例如内存...
  • yqferin
  • yqferin
  • 2015年05月17日 09:14
  • 776

Java.Concurrency.in.Practice.0321349601.pdf 英文原版 免费下载

下载地址: Java.Concurrency.in.Practice.0321349601.pdf
  • jiongyi1
  • jiongyi1
  • 2017年11月08日 09:37
  • 202

Java并发编程实践评价(Java Concurrency in Practice)

我曾经非常幸运的和一个梦幻般的团队一起工作,设计和实现java5和java6新引入的并发特性。如今,还是同一个团队,最好的阐述了这些并发的新特性,并具有普遍性。 并发不再是高级用户独有的主题,每个ja...
  • rjcs888
  • rjcs888
  • 2016年07月13日 00:21
  • 640

2007年Jolt大奖入围产品揭晓

来自FindItAnswers的消息。有不少书都出乎意料,小圈子气息非常明显。居然一本Ajax图书都没有,能反映实际开发的趋势吗?一般性图书Agile Software Development: Th...
  • turingbook
  • turingbook
  • 2007年01月18日 23:59
  • 1688

Spark0.9分布式运行MLlib的协同过滤

在接下来的例子中我们将要装载一个评级数据。每一行包含一个用户、一个产品和一个评级。我们使用默认ALS.train()方法,这个方法假设评级是明确的。我们通过预测评级的均方误差的来评估推荐模型评级的。 ...
  • myboyliu2007
  • myboyliu2007
  • 2014年02月14日 21:46
  • 3127

performance and scalability

就某种算法而言: performance 性能,可能是某算法的预测(分类)精度、耗时等指标。 scalability 可伸缩性,即规模可调整。 应用程序应对负载改变的能力,比如,一个系统在服...
  • chl033
  • chl033
  • 2010年10月07日 00:46
  • 1152

Understand <Java Concurrency in Practice>

1st, Benefits of thread 2nd, Risk of thread 3rd, Thread safety 4th, Sharing Objects 5th, Composi...
  • androidwifi
  • androidwifi
  • 2013年06月22日 21:41
  • 386
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《Java Concurrency in Practice》ch11 Performance and Scalability
举报原因:
原因补充:

(最多只允许输入30个字)