安卓使用memtester进行内存压力测试

memteser简介

memtester 是一个用于测试内存可靠性的工具。

它可以对计算机的内存进行压力测试,以检测内存中的错误,例如位翻转、随机存取错误等。memtester 可以在不同的操作系统上运行,并且可以针对不同大小的内存进行测试。

下载源码

memtester官方地址

https://pyropus.ca./software/memtester/

最新源码下载版本是4.6.0

下载源码解压后文件比较简单:

内置到安卓SDK

把这个文件夹放到android sdk下的externel中重命名为memtester

创建Android.mk放memtester中

mk 复制代码
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= \
        memtester.c \
        tests.c

LOCAL_MODULE:= memtester
LOCAL_MODULE_TAGS := optional
include $(BUILD_EXECUTABLE)

编译

在sdk中

  1. source build/envsetup.sh
  2. lunch xxx
    这里的xxx不同的平台不一样.
  3. mmm external/memtester/

编译出错

复制代码
external/memtester/memtester.c:143:22: error: using the result of an assignment as a condition without parentheses [-Werror,-Wparentheses]
    if (env_testmask = getenv("MEMTESTER_TEST_MASK")) {
        ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
external/memtester/memtester.c:143:22: note: place parentheses around the assignment to silence this warning
    if (env_testmask = getenv("MEMTESTER_TEST_MASK")) {
                     ^
        (                                           )
external/memtester/memtester.c:143:22: note: use '==' to turn this assignment into an equality comparison
    if (env_testmask = getenv("MEMTESTER_TEST_MASK")) {
                     ^
                     ==
external/memtester/memtester.c:314:75: error: arithmetic on a pointer to void is a GNU extension [-Werror,-Wpointer-arith]
                aligned = (void volatile *) ((size_t) buf & pagesizemask) + pagesize;
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
external/memtester/memtester.c:367:67: error: arithmetic on a pointer to void is a GNU extension [-Werror,-Wpointer-arith]
        aligned = (void volatile *) ((size_t) buf & pagesizemask) + pagesize;
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
external/memtester/memtester.c:239:9: error: variable 'memshift' is used uninitialized whenever switch default is taken [-Werror,-Wsometimes-uninitialized]
        default:
        ^~~~~~~
external/memtester/memtester.c:243:55: note: uninitialized use occurs here
    wantbytes_orig = wantbytes = ((size_t) wantraw << memshift);
                                                      ^~~~~~~~
external/memtester/memtester.c:121:29: note: initialize the variable 'memshift' to silence this warning
    int memfd, opt, memshift;

在Android.mk中添加上一行

mk 复制代码
  LOCAL_CFLAGS += -Wno-parentheses \
        -Wno-pointer-arith \
        -Wno-sometimes-uninitialized

编译成功后生成 sdkout/xx/system/bin/memtester

放到安卓设备上

把memtester放到安卓设备上

adb root

adb remount

adb push memtester /system/bin/

memtester测试指令

放到设备上后,就可以进行测试了

以下是一些常见的 memtester 测试命令示例:

  1. 基本测试:
    memtester <内存大小> <测试次数>:这是最基本的用法,比如 memtester 1G 10,表示测试 1GB 的内存,测试 10 次。如果不指定测试次数,memtester 会一直测试下去,直到你手动中断(通常使用 Ctrl + C)。
  2. 指定内存范围测试(适用于特定硬件开发或深入排查问题):
    memtester -p <起始物理地址(十六进制)> <内存大小>:这种方式可以测试特定物理地址开始的一段内存。例如,如果要测试从物理地址 0x10000000 开始的 512MB 内存,可以使用 memtester -p 0x10000000 512M。请注意,这种测试可能会覆盖正在使用的系统内存或其他应用程序的内存,导致系统崩溃,所以要谨慎使用。
  3. 结合其他参数进行测试:
    memtester -d <设备文件>:通过 -d 参数指定一个设备文件来进行测试。默认情况下,memtester 会使用 /dev/mem 设备文件,但在某些特殊情况下,你可能需要指定其他的内存映射设备文件。例如,如果你的系统中有一个特殊的内存设备 /dev/my_memory_device,你可以使用 memtester -d /dev/my_memory_device 100M 5 来测试该设备对应的 100MB 内存,测试 5 次。
    作者:帅得不敢出门
相关推荐
感谢地心引力4 小时前
安卓、苹果手机无线投屏到Windows
android·windows·ios·智能手机·安卓·苹果·投屏
让世界再也没有bug5 小时前
测试工具之一 ------示波器
单片机·嵌入式硬件·硬件测试·嵌入式软件测试
优雅的潮叭8 小时前
cud编程之 reduce
android·redis·缓存
2601_949613029 小时前
flutter_for_openharmony家庭药箱管理app实战+用药知识详情实现
android·javascript·flutter
一起养小猫9 小时前
Flutter for OpenHarmony 实战 表单处理与验证完整指南
android·开发语言·前端·javascript·flutter·harmonyos
2601_949975089 小时前
flutter_for_openharmony城市井盖地图app实战+附近井盖实现
android·flutter
倾云鹤9 小时前
通用Digest认证
android·digest
我是阿亮啊10 小时前
Android 自定义 View 完全指南
android·自定义·自定义view·viewgroup
2601_9498333911 小时前
flutter_for_openharmony口腔护理app实战+意见反馈实现
android·javascript·flutter
峥嵘life12 小时前
Android 16 EDLA测试STS模块
android·大数据·linux·学习