memory test
memory test 命令可测试主内存。该命令使用命令选项定义的测试算法对一个或多个处理器测试一系列主 DRAM,测试持续时间已在时间选项中进行定义。
命令语法
udiag memory test { ALGORITHM } [ RANGE ] [ TIME ] [ MP ]
选项
|
|
ALGORITHM = addr0 | pat0 | pat1 | walk1 | walk0 | rand0 | rand1 | block0 | refresh0
|
|
addr0
|
测试各地址位置的唯一性。
|
pat0
|
全部用 0 填充内存并验证(是否存在固定 1)。
|
pat1
|
全部用 1 填充内存并验证(是否存在固定 0)。
|
walk1
|
通过将 0x01 左移 8 次来填充内存并验证数据。
|
walk0
|
通过将 0xFE 左移 8 次来填充内存并验证数据。
|
rand0
|
使用随机数据填充内存,对数据进行验证、反转并再次验证。
|
rand1
|
在随机位置写入随机数据,对数据进行验证、反转并再次验证。
|
block0
|
将内存范围分为包含随机数据的两个块。数据可以在两个块之间进行交换(复制、反转、自上而下、自下而上)。再次交换数据并验证内存内容。
|
refresh0
|
全部用 0 填充内存,等待 5 分钟,然后验证。然后它将全部用 1 填充内存,等待 5 分钟并验证数据。
|
RANGE = -s <start_address> [-e <end_address_plus_one>]
|
|
-s
|
指定要测试的内存块的起始地址。该地址以十六进制格式输入,并且必须在 4KB 边界对齐。
|
-e
|
指定要测试的内存块的结束地址加 1 字节。如果未给定标志,测试将使用 UEFI 内存分配服务选择的连续块的末尾。如果未给定 RANGE,测试将使用最大的可用内存块。请注意,<start_address> 必须低于 <end_address>。
|
TIME = -time <test_time_in_seconds>
|
|
-time
|
以十六进制指定最长测试时间(秒)。默认值为 0,表示没有时间限制。
|
|
资源要求
ANY_PROC;MULTIPLE_INSTANCES
示例
要在指定地址范围内运行 addr0 测试,请键入:
fs0:/> udiag memory test addr0 -s 100000000 -e 110000000
要在指定地址范围内运行 walk1 测试,请键入:
fs0:/> udiag memory test walk1 -s 100000000 -e 110000000
要对所有处理器运行 rand0 测试,请键入:
fs0:/> udiag memory test rand0 -np all
要在指定时间段(秒)内对指定处理器运行 rand1 测试,请键入:
fs0:/> udiag memory test rand1 5f/5e/5d/1/2/3 -time 258