Buildroot:Debugging, profiling and benchmark(4)
21 ramspeed/smp
ramsmp是ramspeed的SMP版本,同样都用于缓存和内存性能基准测试的工具,特别适用于 UNIX 类操作系统的单处理器和多处理器机器。
ramspeed 的几个主要测试项包括:
1. INTmark/FLOATmark:测量缓存和内存的最大理论带宽性能。
2. INTmem/FLOATmem:模拟实际计算场景,包括 Copy(复制)、Scale(缩放)、Add(加法)和 Triad(三元组)四个子测试,用于测量内存的实际性能。
3. Copy:测试内存中数据复制操作的性能。
4. Scale:测试内存中数据缩放操作的性能。
5. Add:测试内存中数据加法操作的性能。
6. Triad:综合测试内存中数据的加法、缩放和复制操作的性能。
RAMspeed/SMP (GENERIC) v3.5.0 by Rhett M. Hollander and Paul V. Bolotoff, 2002-09 8Gb per pass mode, 2 processes INTEGER Copy: 7551.39 MB/s INTEGER Scale: 7147.70 MB/s INTEGER Add: 7196.22 MB/s INTEGER Triad: 4992.98 MB/s --- INTEGER AVERAGE: 6722.07 MB/s
22 rt-tests
rt-tests 是一套用于测试 Linux 实时性能的工具集合,它包含了多种不同的工具,各自针对不同的性能指标提供了详尽的测试方案。以下是 rt-tests 的主要作用和一些核心测试项的说明:
1. 评估实时性能:rt-tests 用于评估 Linux 内核的实时性能,包括任务调度器的性能、中断延迟、任务调度性能等。
2. 优化系统:通过这些测试工具,开发者和系统管理员可以识别系统的性能瓶颈,进而优化系统的实时性能。
3. 问题定位:帮助定位和解决实时性能相关的问题,特别是在对时间响应有严格要求的应用中。
以下是 hrt-tests 中一些核心的测试工具及其功能:
1. cyclictest:用于测试任务调度器的性能,通过测量线程的实际唤醒时间来提供系统时延的统计信息。
2. hackbench:用于给系统增加负载,模拟不同实时场景下的任务调度性能。
3. pi_tests:包含 pi_stress 和 pip_stress,用于测试 POSIX 优先级继承互斥锁的性能,模拟优先级反转的情况。
4. pmqtest:开启线程对,使用 POSIX 消息队列测量进程间通信的时延。
5. ptsematest:开启两个线程,使用 POSIX 互斥锁测量进程间通信的时延。
6. rt-migrate-test:测试任务在多处理器上的实时调度,确保最高优先级的任务可以运行在所有CPU上。
7. signaltest 和 sigwaittest:测量信号在多个线程或进程间传递的时延。
8. svsematest:启动两个线程或进程,测量 SYSV 信号量的时延。
9. hwlatdetect:探测硬件时延,与 Linux 内核自身无关。
这些工具共同构成了 rt-tests 套件,为 Linux 实时性能的测试提供了全面的解决方案。通过使用这些工具,用户可以深入了解系统的实时性能表现,并据此进行相应的优化。
23 rwmem
rwmem 是一个用于读写内存的工具,它提供了多种方式来操作内存和设备寄存器。以下是rwmem支持的一些常见操作方式的总结:
1. 直接读写内存:
- 读取特定内存地址的内容。
rwmem -r 0xADDRESS
- 向特定内存地址写入数据。
rwmem -w 0xADDRESS 0xDATA
2. 按位操作:
- 读取特定内存地址的特定位字段。
rwmem -rb 0xADDRESS BIT_POSITION
- 向特定内存地址的特定位字段写入值。
rwmem -wb 0xADDRESS BIT_VALUE BIT_POSITION
3. 读写内存范围:
- 读取从起始地址到结束地址的内存范围内容。
rwmem -r 0xSTART_ADDRESS 0xEND_ADDRESS
- 向一系列内存地址写入数据。
rwmem -w 0xSTART_ADDRESS 0xDATA1 0xDATA2 0xDATA3 ...
4. 使用寄存器描述文件:
- 使用寄存器描述文件来识别和操作特定的寄存器区域。
rwmem -r regs.txt
5. I2C设备访问:
- 通过I2C总线读写设备。
rwmem -i I2C_BUS DEVICE_ADDRESS REGISTER_ADDRESS
6. 不同数据大小和字节序:
- 以特定大小(8/16/32/64位)和字节序(小端和大端)访问内存位置。
rwmem -wle 0xADDRESS
7. 文件读写:
- 通过内存映射文件的方式读写文件内容。
rwmem -f FILE_PATH OFFSET
8. 批处理操作:
- 从文件中读取一系列命令并执行。
rwmem -L COMMAND_FILE
这些操作方式使得rwmem成为一个灵活的工具,适用于硬件开发、调试以及性能测试等多种场景。使用rwmem时,应确保具有相应的权限(通常需要root权限),并且要非常小心,因为不正确的操作可能会损坏系统或硬件。在使用之前,最好参考rwmem的手册页或文档以获取详细的使用说明和选项。
24 signal-estimator
signal-estimator是一个用于测量音频信号特性的工具,它能够发送测试信号到音频输出设备,并从输入设备接收回环信号,以测量信号延迟、信号损失比率和I/O抖动等特性。使用时,你只需将音频输出连接到输入设备,运行`signal-estimator`命令,并根据需要选择相应的测量模式和设备,它将输出测量结果,帮助你分析和优化音频系统的性能。
25 spidev_test
spidev_test是一个用于测试 Linux 系统中 SPI 设备的命令行工具,它的作用是验证 SPI 设备的通信功能,测试项目包括发送和接收数据、设置不同的传输速率、位宽以及检查 SPI 设备的响应和数据完整性。通过这个工具,用户可以对 SPI 设备进行基本的读写操作,确保其在系统中能够正确地工作。
26 strace
strace 是一个强大的命令行工具,用于在 Linux 系统中跟踪程序执行时的系统调用和信号。它的作用是诊断、调试和分析程序的行为,通过显示程序执行期间的所有系统调用和接收到的信号,帮助开发者理解程序是如何与操作系统交互的。
strace 能测试的内容主要包括:
1. 系统调用:显示程序执行的所有系统调用,如 open、read、write、fork、exec 等,以及这些调用的返回值。
2. 信号:捕捉程序接收到的所有信号,如 SIGINT、SIGTERM 等。
3. 库函数调用:通过 LD_PRELOAD 机制,strace 可以拦截和显示某些库函数的调用。
4. 错误信息:提供系统调用失败时的错误信息,帮助定位问题。
5. 性能分析:通过分析系统调用的频率和执行时间,可以对程序的性能进行初步分析。
6. 资源使用:监控程序对资源的使用情况,如文件描述符、内存等。
7. 调试:在程序崩溃或行为异常时,strace 可以帮助确定问题发生的位置和原因。
总的来说,strace 是一个多功能的调试工具,适用于开发、测试和生产环境中的系统调用监控和问题诊断。
27 stress、stress-ng
stress 和 stress-ng 是两款在 Linux 系统中用于模拟系统负载的工具,它们可以用于测试系统的稳定性、性能和资源管理等。
stress 是一个较早期的工具,用于测试系统稳定性,通过在系统上产生负载来模拟高负载条件。 而 stress-ng 是 stress 的升级版,它提供更多的选项和能力,可以测试更多的系统资源。
stress-ng 能够测试的内容包括:
1. CPU 计算:产生多个进程,每个进程都反复不停地计算随机数的平方根等。
2. 驱动压力:模拟对驱动的压力测试。
3. I/O 同步:测试系统的 I/O 同步能力。
4. 管道 I/O:通过管道进行 I/O 测试。
5. 缓存抖动:测试缓存抖动对系统的影响。
6. 虚拟机压力:模拟虚拟内存的压力测试。
7. socket压力:测试 socket 相关的压力。
8. 进程创建和终止:模拟进程的创建和终止压力。
9. 上下文切换属性:测试上下文切换的性能。
使用 stress-ng 时,可以通过命令行指定不同的参数来模拟不同的负载情况,例如测试 CPU、内存、I/O 等。 这些测试可以帮助开发者和系统管理员了解系统在高负载下的行为,发现潜在的性能瓶颈和稳定性问题。
stress-ng 提供了多种测试选项,可以用来模拟不同类型的系统负载。以下是一些不同测试内容的实例:
1. CPU 压力测试
stress-ng --cpu 8 --timeout 60s
创建 8 个 CPU 压力测试任务,并运行 60 秒。
2. 内存压力测试
stress-ng --vm 2 --timeout 60s --vm-bytes 128M
创建 2 个虚拟内存压力测试任务,每个任务分配 128MB 的内存,并运行 60 秒。
3. I/O 压力测试
stress-ng --io 4 --timeout 60s
创建 4 个 I/O 压力测试任务,并运行 60 秒。
4. 磁盘写入压力测试
stress-ng --fallocate 1G --timeout 60s
创建一个任务,分配 1GB 的磁盘空间,并在 60 秒内对其进行写入压力测试。
5. 网络压力测试
stress-ng --tcp 4 --timeout 60s
创建 4 个 TCP 连接压力测试任务,并运行 60 秒。
6. 管道和命名管道压力测试
stress-ng --pipe 8 --timeout 60s
创建 8 个管道压力测试任务,并运行 60 秒。
7. 系统调用压力测试
stress-ng --sys 4 --timeout 60s
创建 4 个系统调用压力测试任务,并运行 60 秒。
8. 锁竞争压力测试
stress-ng --lockbus 8 --timeout 60s
创建 8 个锁竞争压力测试任务,并运行 60 秒。
9. 信号处理压力测试
stress-ng --sigqueue 8 --timeout 60s
创建 8 个信号队列压力测试任务,并运行 60 秒。
10. 线程创建和销毁压力测试
stress-ng --threads 4 --timeout 60s
创建 4 个线程,模拟线程创建和销毁的压力,并运行 60 秒。
这些实例展示了如何使用 stress-ng 来模拟不同类型的系统负载,以测试系统的稳定性和性能。每个实例都可以根据需要调整参数,比如增加或减少任务数量、调整内存大小、设置不同的超时时间等。
28 trace-cmd
参考《ftrace利器之trace-cmd和kernelshark - ArnoldLu - 博客园》。
29 uclibc-ng-test
uclibc-ng-test 是 uClibc-ng 项目维护的一个独立的测试套件,它的主要作用是进行定期测试,以确保任何源代码变更都不会破坏 uClibc-ng 的功能和稳定性。以下是 uclibc-ng-test 测试项目的作用和一些基本使用信息:
1. 验证功能:确保 uClibc-ng 的功能按照预期工作,没有因为修改而引入错误。
2. 兼容性测试:检查 uClibc-ng 对不同应用程序的兼容性,确保从 glibc 到 uClibc-ng 的迁移顺利进行。
3. 性能评估:通过测试可以评估性能变化,特别是在资源受限的嵌入式系统中。
4. 问题诊断:帮助开发者快速定位问题,提高开发效率。
30 whetstone
Whetstone 是一个用于测量 CPU 浮点计算性能的工具,它通过一系列基本的浮点运算来评估处理器的性能。