Fenng's Blog

Oracle RDBMS & OpenSource & Publication

用户操作
[即时聊天] [发私信] [加为好友]
冯大辉ID:Fenng
177853次访问,排名422好友83人,关注者89
Evangelist
DB Architect / Blogger
Life@Hangzhou
Work@支付宝(Alipay)
http://www.dbanotes.net 作者
Fenng的文章
原创 139 篇
翻译 0 篇
转载 5 篇
评论 189 篇
冯大辉的公告






    站点访问量:

  • eXTReMe Tracker
最近评论
calvin622:5HZ 为 5秒钟? 你指的HZ是频率的单位吗?
频率和时间是倒数关系啊
bluehouse1985:Linux 环境下的多核调试
— Intel + Totalview 强强联合!
目前,在软件开发行业,各种性能优异的调试工具层出不穷。但是,它们中的绝大部分都只支持windows环境。即使能支持linux平台,操作起来也很不方便。因此,对于长期在linux上编写程序的开发人员来说,如何调试就成了一个令人头痛的问题!Intel软件 和 Total……
sanyechonggyq:呵呵,我觉得仅仅支付宝这么做还是不能解决问题。你想呀,你要是通过银行充值,你不是还要跳转到其它银行的在线支付网站么?你能保证所有银行都支持Firefox么?难呀....
darkread:不同意#qwe0828 的说法
国外光怪陆离的情况更多,诈骗肯定是国外厉害,流氓软件和支付不是一回事。
h_flight:太好了!
文章分类
收藏
    相册
    Logos
    杂七杂八
    博客链接
    Biti_rainy's Blog(RSS)
    Blog.CSDN
    eygle的专栏(RSS)
    freeagle的专栏(RSS)
    Kamus的专栏(RSS)
    Lunar的专栏(RSS)
    Oldwain的专栏(RSS)
    Piner的专栏(RSS)
    我心飞扬的专栏(RSS)
    个人站点
    dbanotes.net
    eygle's site
    snowywolf's site
    我的正式Blog(RSS)
    经典站点
    Ask Tom (RSS)
    CNOUG
    ITPub
    Ixora (Steve Adams)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Unix/Linux 的 Load 初级解释收藏

    新一篇: Unix/Linux 的 Load 初级解释 | 旧一篇: 看 Twitter 人谈架构扩展问题

    几乎每个接触类 Unix 操作系统的工程师都知道如何查看系统负载。但这东西的工作机理到底是怎样的,可能没有多少能说清楚。对比了一些相关信息,加上自己的理解,做一下笔记。

    什么是 Load ? 什么是 Load Average ?

    Load 就是对计算机干活多少的度量(WikiPedia: the system load is a measure of the amount of work that a computer system is doing)。也有简单的说是进程队列的长度. Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 Load 。【最好的参考文章:UNIX® Load Average Part 1: How It Works

    下面是一个 uptime 命令输出:

    $ uptime
    18:57:48 up 423 days, 3:55, 2 users, load average: 1.16, 1.12, 1.20

    尽管各种信息来源的定义都不太确定。能确定的一件事情是,你不能精确获取当前时间的 Load . 最小的计算粒度是 5 秒钟(CALC_LOAD 每 5HZ 计算一次, 5HZ 为 5秒钟). 参见 Linux Kernel 这段代码:

     869        count -= ticks;
     870        if (unlikely(count < 0)) {
     871                active_tasks = count_active_tasks();
     872                do {
     873                        CALC_LOAD(avenrun[0], EXP_1, active_tasks); 
    874 CALC_LOAD(avenrun[1], EXP_5, active_tasks);
    875 CALC_LOAD(avenrun[2], EXP_15, active_tasks);
    876 count += LOAD_FREQ; 877 } while (count < 0); 878 } 879}

    如何判断系统是否已经 Over Load ?

    对一般的系统来说,根据 CPU 数量去判断,如上面的例子, 如果平均负载始终在 1.2 以下,而你是 2 颗 CPU 的机器。那么基本不会出现 CPU 不够用的情况。也就是 Load 平均要小于 CPU 的数量。

    这是 Solaris 性能与工具(Solaris Performance Tools ) 一书推荐的评估方法。【在这里要推荐一下这本书,尽管在 Load 这个地方没有达到我期望的那么细致。但全书揭示了非常多的性能信息。每个 DBA、架构师 的必须书。】

    这么说实际上带来另外两个疑问:

    1 如果是多核 CPU / 超线程的机器怎么判断? 对这样的机器,我的建议是看操作系统怎么识别的 CPU,根据系统识别出来的逻辑 CPU 数量来判断。如果要考虑性能系数,建议参考一下 Oracle 针对不同架构下多核 CPU 的收费标准。

    2 如果应用是面向线程的怎么判断? 这实际上和 M:N 线程模型有关。你的系统是怎样的? 把这个问题考虑进去即可了。

    多数情况下,Load 过高都未必和 CPU 有关。或许倒是有一个例外的,就是应用场景的问题。比如用单 CPU 的机器去做高并发 Web 服务器,麻烦就来了

    Load 与容量规划(Capacity Planning)

    任何一个相对成熟的站点都会利用 Cacti(基于RRDTool) 等工具进行容量规划工作。抓取的 Load 会传 1、5、15 分钟列值过去,这三个度量采用哪个呢? 15 分钟为首选【参见Gunther 的 PPT】。

    Load 与系统预警

    很多对可用性要求比较高的环境都建立了 邮件或SMS 报警机制。关于 Load 报警阈值的制定也有看到不太合理的时候。这里建议 Critical 值(如果用 Nagios 之类的工具你明白这是什么)上限为 物理 CPU 的个数(当然你可以设置比这个低)。但比这个值高的话,意义就不大了。比如,数据库服务器有 4 颗 CPU,那么 Load 高于 4 就应该报警出来,设置比 4 高可能意义不大,因为接到报警还有个人为响应时间...

    误解 一:系统 Load 高一定是性能有问题。

    真相:系统 Load 高也或许是因为在进行 CPU 密集型的计算(比如编译)

    误解 二:系统 Load 高一定是 CPU 能力问题或数量不够。

    真相:Load 高只是代表需要运行的队列累积过多了。但队列中的任务实际可能是耗 CPU的,也可能是耗 I/O 乃至其它因素的。

    误解 三:系统长期 Load 高,首选增加 CPU。

    真相:Load 只是表象,不是实质。增加 CPU 个别时候会临时看到系统 Load 下降,但治标不治本。

    小小一个 Load 讲究其实不少。英文信息其实比较全的,尽量保证加入一点新信息到这篇文章里。入看到有写的不合理的地方或者有异议,请指正或告知。

    发表于 @ 2008年06月23日 09:58:00|评论(loading...)|编辑|

    新一篇: Unix/Linux 的 Load 初级解释 | 旧一篇: 看 Twitter 人谈架构扩展问题

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 冯大辉