ubuntu 14.04 - Stress-ng: RAM testing commands -
stress-ng: can test ram using stress-ng? commands used test ram on mips 32 device?
there many memory based stressors in stress-ng:
stress-ng --class memory? class 'memory' stressors: atomic bsearch context full heapsort hsearch lockbus lsearch malloc matrix membarrier memcpy memfd memrate memthrash mergesort mincore null numa oom-pipe pipe qsort radixsort remap resources rmap stack stackmmap str stream tlb-shootdown tmpfs tsearch vm vm-rw wcs 0 zlib
alternatively, 1 can use vm based stressors too:
stress-ng --class vm? class 'vm' stressors: bigheap brk madvise malloc mlock mmap mmapfork mmapmany mremap msync shm shm-sysv stack stackmmap tmpfs userfaultfd vm vm-rw vm-splice
i suggest looking @ vm stressor first contains large range of stressor methods exercise memory patterns , can possibly find broken memory:
-m n, --vm n start n workers continuously calling mmap(2)/munmap(2) , writ‐ ing allocated memory. note can cause systems trip kernel oom killer on linux systems if not enough physi‐ cal memory , swap not available. --vm-bytes n mmap n bytes per vm worker, default 256mb. 1 can spec‐ ify size % of total available memory or in units of bytes, kbytes, mbytes , gbytes using suffix b, k, m or g. --vm-ops n stop vm workers after n bogo operations. --vm-hang n sleep n seconds before unmapping memory, default 0 seconds. specifying 0 infinite wait. --vm-keep not continually unmap , map memory, keep on re-writing it. --vm-locked lock pages of mapped region memory using mmap map_locked (since linux 2.5.37). similar locking memory described in mlock(2). --vm-madvise advice specify madvise 'advice' option used on memory mapped regions used in vm stressor. non-linux systems have 'normal' madvise advice, linux systems support 'dont‐ need', 'hugepage', 'mergeable' , 'nohugepage', 'normal', 'ran‐ dom', 'sequential', 'unmergeable' , 'willneed' advice. if option not used default pick random madvise advice each mmap call. see madvise(2) more details. --vm-method m specify vm stress method. default, stress methods exercised sequentially, 1 can specify 1 method used if required. each of vm workers have 3 phases: 1. initialised. anonymously memory mapped region set known pattern. 2. exercised. memory modified in known predictable way. vm workers alter memory sequentially, use small or large strides step along memory. 3. checked. modified memory checked see if matches expected result. vm methods containing 'prime' in name have stride of largest prime less 2^64, allowing them thoroughly step through memory , touch locations once while doing without touching memory cells next each other. strategy exercises cache , page non-locality. since memory being exercised virtually mapped there no guarantee of touching page addresses in particular physical order. these workers should not used test system's memory working correctly either, use tools such memtest86 instead. vm stress methods intended exercise memory in ways possibly find memory issues , try force thermal errors. available vm stress methods described follows: method description iterate on vm stress methods listed below. flip sequentially work through memory 8 times, each time 1 bit in memory flipped (inverted). effec‐ tively invert each byte in 8 passes. galpat-0 galloping pattern zeros. sets bits 0 , flips 1 in 4096 bits 1. checks see if 1s pulled down 0 neighbours or of neighbours have been pulled 1. galpat-1 galloping pattern ones. sets bits 1 , flips 1 in 4096 bits 0. checks see if 0s pulled 1 neighbours or of neighbours have been pulled down 0. gray fill memory sequential gray codes (these change 1 bit @ time between adjacent bytes) , check if set correctly. incdec work sequentially through memory twice, first pass increments each byte specific value , second pass decrements each byte origi‐ nal start value. increment/decrement value changes on each invocation of stressor. inc-nybble initialise memory set value (that changes on each invocation of stres‐ sor) , sequentially work through each byte incrementing bottom 4 bits 1 , top 4 bits 15. rand-set sequentially work through memory in 64 bit chunks setting bytes in chunk same 8 bit random value. random value changes on each chunk. check values have not changed. rand-sum sequentially set memory random values , summate number of bits have changed original set values. read64 sequentially read memory using 32 x 64 bit reads per bogo loop. each loop equates 1 bogo operation. exercises raw memory reads. ror fill memory random pattern , sequentially rotate 64 bits of mem‐ ory right 1 bit, check final load/rotate/stored values. swap fill memory in 64 byte chunks ran‐ dom patterns. swap each 64 chunk randomly chosen chunk. finally, reverse swap put chunks original place , check if data correct. exercises adjacent , random memory load/stores. move-inv sequentially fill memory 64 bits of mem‐ ory @ time random values, , check if memory set cor‐ rectly. next, sequentially invert each 64 bit pattern , again check if memory set expected. modulo-x fill memory on 23 iterations. each iteration starts 1 byte further along start of memory , steps along in 23 byte strides. in each stride, first byte set ran‐ dom pattern , other bytes set inverse. checks see if first byte contains expected random pattern. exercises cache store/reads seeing if neigh‐ bouring cells influence each other. prime-0 iterate 8 times stepping through mem‐ ory in large prime strides clearing on bit @ time in every byte. check see if bits set zero. prime-1 iterate 8 times stepping through mem‐ ory in large prime strides setting on bit @ time in every byte. check see if bits set one. prime-gray-0 first step through memory in large prime strides clearing on bit (based on gray code) in every byte. next, repeat clear other 7 bits. check see if bits set zero. prime-gray-1 first step through memory in large prime strides setting on bit (based on gray code) in every byte. next, repeat set other 7 bits. check see if bits set one. rowhammer try force memory corruption using rowhammer memory stressor. fetches 2 32 bit integers memory , forces cache flush on 2 addresses multiple times. has been known force bit flipping on hardware, lower fre‐ quency memory refresh cycles. walk-0d each byte in memory, walk through each data line setting them low (and others set high) , check written value expected. checks if data lines stuck. walk-1d each byte in memory, walk through each data line setting them high (and others set low) , check written value expected. checks if data lines stuck. walk-0a in given memory mapping, work through range of specially chosen addresses working through address lines see if address lines stuck low. works best physical mem‐ ory addressing, however, exercising these virtual addresses has value too. walk-1a in given memory mapping, work through range of specially chosen addresses working through address lines see if address lines stuck high. works best physical mem‐ ory addressing, however, exercising these virtual addresses has value too. write64 sequentially write memory using 32 x 64 bit writes per bogo loop. each loop equates 1 bogo operation. exercises raw memory writes. note memory writes not checked @ end of each test iteration. zero-one set memory bits 0 , check if bits not zero. next, set memory bits 1 , check if bits not one. --vm-populate populate (prefault) page tables memory mappings; can stress swapping. available on systems support map_populate (since linux 2.5.46).
so run 1 vm stressor uses 75% of memory using vm stressors verification 10 minutes verbose mode enabled, use:
stress-ng --vm 1 --vm-bytes 75% --vm-method --verify -t 10m -v
Comments
Post a Comment