chapter11_性能与可伸缩性_1_对性能的思考

  • (1) 提升性能往往意味着增加复杂性, 因此增加了安全性和活跃性上发生失败的风险

    (2) 提升性能很重要, 但是安全性是第一位的

  • __资源__常常包括

    CPU时钟周期

    内存

    网络带宽

    IO带宽

    数据库请求

    磁盘空间

  • 使用多线程__未必可以提升整体性能__, 因为使用多线程总会引入额外的开销

    (1) 线程之间的协调

    (2) 上下文切换操作

    (3) 线程的创建和销毁

    (4) 线程的调度

  • 从性能监视的角度看, CPU应该尽可能保持忙碌状态。

    对于多个CPU, 那么通过将程序分解为多个线程, 从而使得所有CPU都保持忙碌状态

  • 衡量性能的指标

    (1) "多快"系列: 完成某个任务需要多少时间

    服务时间、延迟时间等

    (2) "多少"系列: 在给定资源一定的条件下, 能完成多少工作

    吞吐量等

    (3) 这两种指标常常是矛盾的

  • 可伸缩性

    (1) 当增加计算资源时(CPU、内存、磁盘、IO带宽等), 程序的吞吐量或者处理能力__能够随之增加__

    (2) 当进行__性能调优__时, 关注的是用更小的代价完成相同的工作

    (3) 当进行__可伸缩性调优__时, 关注的是将问题的计算并行化

    (4) 引入并行计算后, 对于单一的系统常常性能会下降; 但是, 我们通常会接受每个工作单元执行更长的时间,来换取可伸缩性

  • 避免不成熟的优化

    首先使得程序正确, 然后再提高运行速度(如果有必要的话)

  • 在对性能调优时, 要明确需求

    例如: 高负载/低负载? 数据大/数据小? …

    一切需求以测试结果为基准, 不要猜测

猜你喜欢

转载自blog.csdn.net/captxb/article/details/88619091