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|[email protected]
> _______________________________________________
> m5-users mailing list
> [email protected]
> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
>
>
_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users