內存壓測神器:memtester深度指南


1.前言

本文接上篇燒腦神器cpuburn,繼續介紹監控告警的資源場景構造。

如何構造內存使用率過多的場景?

有兩個方法:

1. 自己寫代碼弄個小工具,不斷地去allocate_memory。

2. 用現成的工具:比如馬上要介紹這款內存測試工具:memtester

 

2.簡介

項目地址http://pyropus.ca/software/memtester/

簡介:A userspace utility for testing the memory subsystem for faults. It's portable and should compile and work on any 32- or 64-bit Unix-like system. (Yes, even weird, proprietary Unices, and even Mac OS X.) For hardware developers, memtester can be told to test memory starting at a particular physical address as of memtester version 4.1.0.

翻譯:一款在用戶空間下,用於測試內存正確性的實用工具,適用於大多數平台。可以在32位或64位的類Unix操作系統編譯和運行(當然也包括MacOs)。這款工具主要面向硬件開發人員,從4.1.0版本開始,memtester可以指定起始物理內存地址進行測試。

通過介紹可以得知這是一款測試內存正確性的工具,雖說的是適用於硬件工程師,但是我們也可以拿過來構造內存占用的場景。

 

3.安裝方式

3.1 源碼編譯(推薦)

#1.下載源碼
wget http://pyropus.ca/software/memtester/old-versions/memtester-4.3.0.tar.gz

#2. 解壓縮
tar xzvf memtester-4.3.0.tar.gz

#3. 編譯
sudo make

#4. 安裝
sudo make install

3.2 預編譯好的二進制

memtester存在於各Linux系統的軟件安裝包列表里面,可以自行用對應軟件管理命令查找memtester,如下是相關Linux系統的memtester的package信息:

 Debian

 Ubuntu

 DAG packages for Fedora

 NetBSD ports

 MacPorts

 NetBSD

 Solaris/SunOS (sunfreeware.com)

比如,Ubuntu下安裝memtester

sudo apt install -y memtester

4. 幫助

Usage: memtester [-p physaddrbase [-d device]] <mem>[B|K|M|G] [loops]

參數解釋

   -p PHYSADDR: 用於指定起始物理內存地址開始測試(16進制的地址格式),一般是硬件工程師用來測試內存映射的設備IO等場景。指定內存地址會覆蓋對應地址的內存數據(這部分內存可能是系統或者其他應用在用的),從而導致crash。

   -d 默認使用/dev/mem,我們不用指定

   mem: 默認使用M(MB),可以指定B, K, M, or G(分別代表 bytes, kilobytes, megabytes, or gigabytes)

   loops:測試次數,默認無限次數執行下去

5. 例子

1)首先查看本機內存

free -g,可以看到有16G

 

 

2)分配10g內存用於memtest,循環十次

memtester 10g 10

文中打印了很多測試信息,可以看出來memtester對內存的邏輯操作進行了正確性驗證。

 

3) 查看實際內存使用情況

輸入: top ,然后按下m字母鍵。

10/16≈62.5%,系統整體的內存使用率達到了70%,memtester使用了約64%左右。

 

 

 

6.其他

退出碼

 0:正常退出

 x01:內存分配或者鎖定失敗

 x02:stuck Address測試失敗

 x04:其他測試失敗

最佳實踐

  •  在32位系統上運行memtester的話,memtester最多只能申請使用4GB內存。
  •  不要指定memtester測試內存大於系統的可用內存,如果超額申請過多內存,會明顯影響其他進程,最終可能會被系統殺掉(OOM killer)(其實這么做根本無法啟動memtester)
  •  盡量在root權限下執行memtester,以便讓memtester能申請到指定的內存大小。

 

博主:測試生財(一個不為996而996的測開碼農)

座右銘:專注測試開發與自動化運維,努力讀書思考寫作,為內卷的人生奠定財務自由。

內容范疇:技術提升,職場雜談,事業發展,閱讀寫作,投資理財,健康人生。

csdn:https://blog.csdn.net/ccgshigao

博客園:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374

微信公眾號:測試生財(定期分享獨家內容和資源)

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM