我正在尝试比较我拥有的两台机器的性能。我在两台机器上都有一个使用相同设置安装的数据库。两台机器的CPU(20核)/内存(65GB)数量相同。每台机器都是带有本地磁盘的专用 esx 中的虚拟机。
我在两台机器上运行相同的操作,但我在 machine2 中看到的结果比 machine1 好得多,即使硬件相同。我试图找到根本原因,并从调查内存开始。我在两台机器上观察了 free -m 的输出,发现在整个操作过程中,缓冲区/共享/缓存具有非常不同的值:
机器 1(平均)已使用 - 42GB,缓冲区 - 450MB,共享 - 1.9GB,缓存 - 39GB
机器 2(平均)已用 - 58GB,缓冲区 - 2.8GB,共享 - 4GB,缓存 - 29GB,
根据我的理解,缓存意味着最近从磁盘读取的数据将保存在缓存中以节省 I/O,这意味着在 machine1 中读取应该更快,因为缓存的列更大(与我的结果相反)。
知道什么可以解释结果吗?我还能调查什么?
答案1
你不能那么容易地比较机器。您需要解决以下几点:
- 主机系统和虚拟机上的相同磁盘(在速度、I/O 操作、缓存、磁盘分区方面)。具有相同的配置、LVM等。
- 相同的软件 - 您应该运行相同版本的主机操作系统、相同的补丁、相同的设置
- 相同的虚拟机 - 这对于您的情况来说是最重要的,因为每个虚拟机都将具有独特的负载。
- 此外,同一虚拟机可以根据一天中的时间、该计算机上运行的操作等显示不同类型的负载
答案2
2.8GB 的缓冲区已经相当多了。这几乎肯定意味着某些东西在块设备上执行原始 I/O 或绕过文件系统缓存。这反过来意味着驱动程序或您在其上运行的任何内容都不完全相同。
- 比较您正在运行的软件的版本及其配置
- 比较内核版本
- 比较 ESX 部分上虚拟机的硬件模拟
- 可能值得比较它们运行的实际硬件
- 可能值得比较主机上的内核和 ESX 版本