Status: Finding out why a program takes 17 seconds to save its parameters to a leveldb database.
Relevant strace
output:
mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_SHARED, 8, 0) = 0x7fa5bc8d3000
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d3000, 8192, MS_SYNC) = 0
msync(0x7fa5bc8d4000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d4000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d4000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8d4000, 4096, MS_SYNC) = 0
---- SNIP 607 lines ...
msync(0x7fa5bc8dd000, 4096, MS_SYNC) = 0
msync(0x7fa5bc8dd000, 4096, MS_SYNC) = 0
So for each one of the ~700 parameters, which are about 32 bytes each, the program will write 4096 bytes to the hard drive and wait until it’s done before continuing. Brillant!