安卓使用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 次。
    作者:帅得不敢出门
相关推荐
骑驴看星星a2 小时前
【Three.js--manual script】4.光照
android·开发语言·javascript
TDengine (老段)8 小时前
TDengine 字符串函数 CONCAT_WS 用户手册
android·大数据·数据库·时序数据库·tdengine·涛思数据
会跑的兔子9 小时前
Android 16 Kotlin协程 第一部分
android·开发语言·kotlin
Meteors.10 小时前
安卓进阶——OpenGL ES
android
椰羊sqrt12 小时前
CVE-2025-4334 深度分析:WordPress wp-registration 插件权限提升漏洞
android·开发语言·okhttp·网络安全
2501_9160088912 小时前
金融类 App 加密加固方法,多工具组合的工程化实践(金融级别/IPA 加固/无源码落地/Ipa Guard + 流水线)
android·ios·金融·小程序·uni-app·iphone·webview
sun00770012 小时前
Android设备推送traceroute命令
android
来来走走12 小时前
Android开发(Kotlin) 高阶函数、内联函数
android·开发语言·kotlin
2501_9159214312 小时前
Fastlane 结合 开心上架(Appuploader)命令行版本实现跨平台上传发布 iOS App 免 Mac 自动化上架实战全解析
android·macos·ios·小程序·uni-app·自动化·iphone
雨白13 小时前
重识 Java IO、NIO 与 OkIO
android·java