概要分析

下面查看在共享L2缓存的情况和不共享的情况下性能会有多大的变化(如图5-8和图5-9所示)。这里准备了两个客户端操作系统,在客户端操作系统A中执行UnixBench,在客户端操作系统B中加大CPU或内存负载。

概要分析 - 图1

CPU和内存的负载工具是stress[1]

概要分析 - 图2

图 5-8 各客户端操作系统分别共享L2缓存的情况

概要分析 - 图3

图 5-9 两个客户端操作系统共享L2缓存的情况

图5-10所示为UnixBench的结果。纵轴为与客户端操作系统B空间状态的比例。横轴为UnixBench的各基准测试的种类。从结果来看,在客户端操作系统之间共享L2缓存的情况下,对客户端操作系统B加大CPU负载时,客户端操作系统A的性能降低并不明显。但是对客户端操作系统B加大内存负载时,客户端操作系统A的性能降低了70%左右。但是,对客户端操作系统B加大内存负载时,客户端操作系统A的CPU相关基准测试中并未出现太大的性能降低。

概要分析 - 图4

图 5-10 UnixBench的结果

概要分析 - 图5

图 5-11 sysbench的结果

那么,在实际的DB服务器等上会产生多大的影响呢?图5-11所示为进行sysbench而非UnixBench时的示例。纵轴为执行sysbench的合计时间。在客户端操作系统共享L2缓存的情况下,如果加大对客户端操作系统B的内存负载,从客户端操作系统A的sysbench结果也能够看出性能降低了20%左右。

根据以上结果,可以得知:

1.内存负载较高的客户端操作系统在分配CPU时必须让该客户端操作系统的虚拟CPU共享缓存。

2.由于CPU负载较高的客户端操作系统在共享CPU缓存时会产生的影响较小,因此可用它来与内存负载较高的客户端操作系统共享CPU缓存。

[1]http://weather.ou.edu/~apw/projects/stress/stress-1.0.4.tar.gz