纪念 Thinkpad

第一台笔记本,Thinkpad X200 74574AC,这台世界上只有我能驾驭的机器。
01/2009 – 01/2014


陪伴了我五年的时光,经历了 Vista -> Ubuntu -> Arch。
去年开始用 Macbook air,长的漂亮带着轻,其他方面跟 09 年的这台比起来差的远
还是初恋的感觉最好,永远都是那种朴实无华的味道,纪念一下。

如何评估一台服务器(内存)

关于服务器各个部件的问题,可以参考 IITKGP 出的一门叫 《Digital Computer Organization》公开课  ,这里面把计算机的各级 storage 讲述的很详细。
在跑这些(不管是内存的还是磁盘的等等) benchmark 的时候,注意停掉不相关的应用,保持一个干净没有负载的系统。下面会主要介绍 4 种 benchmark 的工具,各个工具的侧重点不一样,求同存异吧。

1. stream
这个工具目前算是比较通用经典,得到工业界认可的工具,之前在 HPC 上用的比较多,现在在互联网行业用的也算是比较广泛的了。
stream 支持 COPY、SCALE、ADD、TRIAD 四种操作,编译后开始运行会默认运行这四种操作。
最新的 5.10 已经将原来的 stream array size 由原来的 2m 增加到 10m 了,以适应越来越大的 L3 需求。总的来说,要运行 stream,需要注意下 STREAM_ARRAY_SIZE 以及 NTIMES 这两个参数。
实际测试中发现运行的特别快,一般 3s 之内就完成一轮测试,因此比较好的方式是多跑几轮(这个在下面要介绍的几款测试工具中都存在,pmbw 在这方面相对做的比较好),取平均值或者中位数。除非你设的 STREAM_ARRAY_SIZE/NTIMES 特别大。

github 上已经有人将其自动化了,可以做从 1 到 $(grep -c processor /proc/cpuinfo) Triad 值;还可以做 multi run。

stream 的官方有不少的测评数据,包括 standard、tuned 等测试包括,可以结合自身的做一下参考。这几个文档,一个通过其发现 bottleneck一个是在 huge pages 里面的应用,最后一个是一个比较综合的测评,在对 postgre 做 benchmark 的时候用到了 stream。


2. bandwidth 
bandwidth 这个工具能够发现内存子系统包括周边的 bus、cache 系统的问题。同时还可以做 network benchmark,不过这个不是我们关注的重点。这个项目除了工具做的不错,跟 stream 一样有不少实体机的 benchmark 数据之外,最出彩的地方是他的文档,尤其是主页的这段,通过 i5 2.5GHz 的 Macbook Pro 机型的测试数据,让你对计算机各个 storage 之间的速度级别有了一个很量化的认识。


3. memtest86+
这是我见到过的最简单的内存 benchmark 工具,只要下载一个 ios 文件,然后重启进入这个系统就可以了。该工具除了能够做 benchmark 之外,还能够做深层次的 failures detection,由于涉及到很多内存的底层构造,因此改工具一直在不断的跟进最新的内存品牌型号。尽管有比这个更简单的方式检测到内存的问题,这个我会单独的写一篇博客说明。


4. pmbw
最后一个要介绍的是 pmbw,据软件作者自己说,是集大成者,弥补了上面软件的不少缺陷。
pmbw 直接通过一些列的汇编指令完成,吸取了 stream(非汇编)以及 bandwidth(局限于 sequential 的测试方式) 的缺点进行改进。同样的,测试报告写的很漂亮,非常有参考价值,比如常见的 E5-2670

最后除了通过 top, htop, vmstat, dstat 等"老掉牙"工具查看系统的实时负载之外,有一个叫 memtop 的工具,原理比较简单,主要是从 /proc/$PID/maps 以及 /proc/meminfo 这两个文件读取,只记录 private/writeable 的内存,而不记录 private/non-writeable 以及 shared 的内存。可以通过他快速的确定有内存问题的应用。除此之外,再介绍几个实时查看系统负载的工具:
1. nmon(Nigel's Monitor)
分为 online 以及 capture 这两种模式,后者可以导入到 csv 文件里面出图。还有个比较方便的地方是可以预先设置环境变量,然后就可以直接运行了:
# export NMON=cmdknjv

2. glances
glances 除了能够导出为 csv, html 的格式外,还能够通过 c/s 的方式对远端的机器进行监控,还能够通过开放的 API 对跟其他的监控系统对接,个人看来意义不是很大,glance 调用的是 psutil 库该库本身就不是很全面,权当参考了。

3. atop
这个功能跟上面的两个类似 ,有个比较独特的是可以通过加载 netatop 模块来查看每一个 process/thread 的网络使用情况,发送接受的包数量、平均的包大小、每一个 process/thread 的带宽消耗等。官方有一个叫 《Case study with atop:memory leakage》的 case study,除了介绍了内存的基本概念之外,还结合了 atop 诊断出了一个内存泄漏的问题,值得一看。

Cisco 三层交换参数

12 年写的一篇文档,14 年 2 月看来,不少东西还是适用的。


上一篇简单的总结了下 Cisco 交换产品的型号配置。对于 IDC 来说,二层设备还是很简单的,基本就是下面几个型号。
WS-C2960S-48TD-L
48 Ethernet 10/100/1000 ports
2 10 Gigabit Ethernet or 2 1 Gigabit Ethernet SFP+ uplink ports
Optional Cisco FlexStack stacking support
LAN Base image

WS-C2960S-24TD-L
24 Ethernet 10/100/1000 ports
2 10 Gigabit Ethernet or 2 1 Gigabit Ethernet SFP+ uplink ports
Optional Cisco FlexStack stacking support
LAN Base image

WS-C2960S-48TS-L
48 Ethernet 10/100/1000 ports
2 1 Gigabit Ethernet SFP uplink ports
Optional Cisco FlexStack stacking support
LAN Base image

WS-C2960S-24TS-L
24 Ethernet 10/100/1000 ports
2 1 Gigabit Ethernet SFP uplink ports
Optional Cisco FlexStack stacking support
LAN Base image

其中 TD 两款是有 10G uplink 的,而下面两款基本等同于之前的 WS-C2960G-48TC-L 型号。如果只需要 Lan Lite 的,对应的则是:
WS-C2960S-24TS-S
WS-C2960S-48TS-S
TD 对应的两款没有 Lan Lite。
Continue reading