从一本27岁的Unix书中学到的教训

2021-02-17 18:07:39

Amazon的" Sun性能和调整:Java和Internet"的评论者之一。给它3/5星。虽然仍然是不错的介绍,但阿德里安·考克克罗夫特(Adrian Cockcroft)所著的书已过时-罗兰(Roland)在2003年宣称,相信这不是18年前。罗兰评论的书于1998年出版,第二版。第一版(1994)具有明显不同的标题:" Sparc& Solaris是代替Java和Internet的焦点。这两个版本除了反映出Sun的关注重点发生了重大变化外,分别在94和98之间,它们的价格也有所不同。 " Java和Internet"费用为15.97欧元,而一个可享“ Sparc& Solaris"在据说很好的条件下使用1.94。如果我要购买一本过时的书,那么我将获得尽可能多的过时的书,如果被igigured,再想想如果有人在我的书架上找到一本有关Java的书,那会很尴尬。运费为3块钱,总计4.94 EUR,下订单后15天就在我手中。

"保时捷书"我很快就解释了UNIX和封面上的保时捷911之间的类比:两者都是在60年代创建的,形式类似于当前版本。尽管它们有古怪之处,但它们都代表了1994年甚至2021年左右仍在生产的最新和最伟大的产品。

在这一点上,一个有效的问题显然是:为什么您关心30年前出版的一本书,而最近出版的书又如此之多,而且肯定更有用?原因之一是我发现Sun Microsystem的历史特别有趣。我已经阅读并非常喜欢正午和森伯斯特(Sunburst)的交易-回顾最近的历史,很荣幸有很多现成的主要资源可供使用,这很棒。在谈到保时捷书时,我发现阅读90年代最常见的Sun服务器使用场景非常着迷,对于不知道forSunOS 4的管理员,我不禁感到抱歉。 DirectoryName查找缓存(DNLC)中仅缓存最长14个字符的文件名。但是,在本文中,我想重点介绍本书中包含的信息,该信息至今仍然有效。在一个与计算机世界一样快的世界中,您可能会说所有书籍都是过时的。如果“ Sun Performance andTuning”中的某些信息;有效期是1994年,有效期是2021年,很有可能从现在起30年内仍然有效。

在我看来,我们可以将技术知识分类如下:理论知识,通用实践信息和实施细节。在这三种方法中,理论知识最有可能与时间保持联系,其次是通用实践信息,这些信息可能仍会应用数年,最后是实施细节,随着时间的流逝,它们很可能变得无关紧要。但是,这些细节并非毫无用处:实际上,它们区分了新手和经验丰富的从业者。举个例子:关于网络的章节以内置的网络接口的说明开始,指出它与SCSI接口共享DMA连接。至关重要的是,网络接口具有更高的优先级:繁重的网络活动可能会降低磁盘吞吐量。在1994年,您可能需要先查看多个磁盘性能差的工作站,然后才能得出结论,网络流量与它有任何关系-或阅读本书。

当执行一组测试时,可以使用多个设置和旋钮,每个都有不同的选项可供选择。我们正在使用哪个文件系统?我们正在测试的应用程序是什么版本?内核缓冲区大小?

要测量6种不同因素的每种组合(每4个级别)将进行4 ^ 6 = 4096次测量,这显然是疯狂的。通过将我们考虑的级别减少到2,仍然在所有可能的组合中评估所有6个不同的因素,我们得出的结果是2 ^ 6 = 64个测量值。

吞吐量-在给定的时间内完成的工作量-大约是60年代,今天还是一样,到2050年仍将是工作/时间。您的Web服务器的最大吞吐量可能为10000每秒请求数(rps),您可以将其与另一个请求进行比较。响应时间(等待时间)定义为用户必须等待的时间。例如,给定的数据库事务花费了多长时间。利用率是指计算机使用了多少资源来完成这项工作。sar和iostat报告的值(这两种工具至今仍在使用)是利用率度量的一个示例。

作者建议在各种负载水平下进行多次sar利用率测量,并将其与awk结合使用,以大致了解系统的运行方式。如今,我们确实有Prometheus,Grafana和朋友,但是sar | awk idea提醒您快速,简单的测量也可以大有帮助!

详细介绍了vmstat和sar,重点关注可运行队列,阻塞队列,交换使用情况等。 procps和sysstat的vmstat和sar的Linux版本与Solaris有所不同,但是主要思想仍然适用。

在“规则和可调参数快速参考表”部分中也使用了这三个命令。对于每个子系统(磁盘,网络,内存,CPU),作者指定了一个规则列表,其中涉及命令和规则适用时要采取的措施。规则由带有任何选项的命令名称组成,然后为a"。后跟要考虑的变量名称。例如,以下指示磁盘瓶颈:35% iostat-D30.util< 65%。采取的措施是尝试也平衡其他磁盘上的I / O负载,或获得更多磁盘。

Solaris 2.2中的中断在所有可用CPU之间进行了负载均衡。缺点是,如果给定设备的中断负载很重,则缓存命中率将受到影响:操作系统允许将IRQ静态分配给CPU作为改进。

如今,Linux上的irqbalance守护程序发生了非常类似的问题,该守护程序不应在进行大量网络活动的系统上使用。相反,应该配置SMPaffinity以确保多队列网卡的中断在CPU之间静态映射。

" Sun Performance and Tuning"中有更多信息。到今天仍然可以提供宝贵的经验教训,以及那些东西真正的历史瑰宝。如果您有兴趣,请在Internet存档上查看!