I fixed a similar problem with the following diff: diff --git a/src/mem/physical.cc b/src/mem/physical.cc --- a/src/mem/physical.cc +++ b/src/mem/physical.cc @@ -476,6 +476,7 @@ void PhysicalMemory::serialize(ostream &os) { + const int chunkSize = 16384; if (!pmemAddr) return; @@ -496,12 +497,20 @@ if (compressedMem == NULL) fatal("Insufficient memory to allocate compression state for %s\n", filename); - - if (gzwrite(compressedMem, pmemAddr, params()->range.size()) != - params()->range.size()) { + + /*if (written_size != params()->range.size()) { fatal("Write failed on physical memory checkpoint file '%s'\n", filename); - } + }*/ + + uint64_t curSize = 0; + do { + unsigned int written_size = (unsigned int)gzwrite(compressedMem, pmemAddr + curSize, chunkSize); + if (written_size <= 0) { + fatal("Write failed on physical memory checkpoint file '%s'\n",filename); + } + curSize += written_size; + } while (curSize < params()->range.size()); if (gzclose(compressedMem)) fatal("Close failed on physical memory checkpoint file '%s'\n",
William George Beazley Jr wrote: > Seems large than physical memory larger 1536MB suffers from: > > Writing checkpoint > fatal: Write failed on physical memory checkpoint file > 'system.physmem.physmem' > @ cycle 500 > [serialize:build/ALPHA_SE/mem/physical.cc, line 479] > Memory Usage: 5395972 KBytes > > I should think this machine is large enough to support it: > [willi...@trout ~]$ free > total used free shared buffers > cached > Mem: 66013472 17933008 48080464 0 284200 > 14918872 > -/+ buffers/cache: 2729936 63283536 > Swap: 78148152 0 78148152 > [willi...@trout ~]$ > > ----------------------------------- > Will Beazley|Sys. Software Analyst > 409.880.7847|wgbeaz...@my.lamar.edu > _______________________________________________ > m5-users mailing list > m5-users@m5sim.org > http://m5sim.org/cgi-bin/mailman/listinfo/m5-users > > _______________________________________________ m5-users mailing list m5-users@m5sim.org http://m5sim.org/cgi-bin/mailman/listinfo/m5-users