2 import sys, re, struct, mmap
3 from bup import git, options
4 from bup.helpers import *
8 def s_from_bytes(bytes):
9 clist = [chr(b) for b in bytes]
14 fields = ['VmSize', 'VmRSS', 'VmData', 'VmStk']
16 for line in open('/proc/self/status').readlines():
17 l = re.split(r':\s*', line.strip(), 1)
21 fields = [d[k] for k in fields]
24 print ('%9s ' + ('%10s ' * len(fields))) % tuple([e1] + fields)
29 bup memtest [-n elements] [-c cycles]
31 n,number= number of objects per cycle [10000]
32 c,cycles= number of cycles to run [100]
33 ignore-midx ignore .midx files, use only .idx files
35 o = options.Options('bup memtest', optspec)
36 (opt, flags, extra) = o.parse(sys.argv[1:])
39 o.fatal('no arguments expected')
41 git.ignore_midx = opt.ignore_midx
43 git.check_repo_or_die()
44 m = git.PackIdxList(git.repo('objects/pack'))
47 f = open('/dev/urandom')
50 for c in xrange(opt.cycles):
51 for n in xrange(opt.number):
54 bytes = list(struct.unpack('!BBB', b)) + [0]*17
56 bin = struct.pack('!20s', s_from_bytes(bytes))
59 a[2] = chr(ord(b[2]) & 0xf0)
61 #print bin.encode('hex')
63 report((c+1)*opt.number)