我被要求编写测试用例,以实际显示在读取器较多而写入器较少的情况下信号量和读写信号量的性能,反之亦然。我已经实现了信号量(在内核空间中,我们实际上被要求),但不知道如何编写用例并对其进行实时的实际评估(明确地)。
发布于 2013-07-31 00:09:39
为什么不直接写两个版本的代码(信号量/读/写信号量)作为开始。用例将取决于正在测试的实际功能。它是一个设备驱动程序吗?它与IO有关吗?它与网络有关吗?在不知道这一点的情况下,很难提出用例。
一般来说,对于IO基准测试,我会针对一组运行在不断增加的内存占用上运行多个模拟。另一组运行可能会超过不断增加的进程负载。另一种可能是不同的块大小。我会将其中的每一个与诸如聚合带宽之类的东西进行比较,并查看性能(在本例中为聚合带宽)在这些测试中的变化。
同样,如果您正在测试诸如USB驱动程序之类的东西,那么您的用例可能会完全不同。
发布于 2013-08-01 19:34:00
使用您的自定义信号量,编写以下两个C程序并对其进行编译
reader.c writer.c作为一个简单的基本测试,编写一个shell脚本test.sh并添加您的命令来加载测试二进制文件,如下所示。
#!/bin/sh
./reader &
./reader &
./reader &
./reader &
./writer &以./test.sh身份启动上面的shell脚本将启动4个读取器和1个写入器。根据您的测试场景对其进行自定义。
确保您的程序运行正常,即在尝试评测性能之前,先验证数据交换是否正确。
确定IPC按预期工作后,分析cpu使用情况。在启动test.sh之前,请在另一个终端上运行top命令。在测试脚本运行时,观察不同数量的读取器/写入器的cpu使用模式。
您还可以使用以下命令启动单独的二进制文件(或在测试脚本中):
time <binary>打印总生存期和等待内核driver.
perf record <binary>所花费的时间完成后,运行perf annotate main
获取代码各个部分所用的相对时间。
https://stackoverflow.com/questions/17949999
复制相似问题