我正在寻找一种在使用大页面的情况下衡量性能影响/增益的方法。例如,我有 192GB RAM 服务器,其中 140GB 由大页面分配。我运行 Postgres,在大页面中使用共享缓冲区。
有没有办法使用 perf 或 eBPF 检查内核或 libc 端的性能?理想情况下,最好查看特定函数的延迟(或执行期间所花费的时间)的变化。但问题是,我不知道需要分析哪些函数或探测器。
答案1
您不需要一些抽象的测试来衡量性能的增益或损失。运行最能描述您的负载配置文件和当前环境的测试套件。如果您有一些繁重的 PLSQL/存储过程序列 - 请使用它们作为基准:在记录所用时间的同时运行带有和不带有大页面的测试。这将是最好的方法。事实上,如果某人在您不使用的某些负载配置文件上使用大页面将会带来好处,但您将获得统计上的零性能增益 - 这意味着此调整对您的任务毫无用处。
至于大页面,我真的怀疑 PostgreSQL 是否会有显著的好处。或者一般来说,任何 SQL 服务器都会有。但我可能错了。
答案2
好的起点是使用perf stat
TLB 事件。详情如下这里。