tmpfs runs out of space on 8.2pre-release, zfs related?

miyamoto moesasji miyamoto.31b at gmail.com
Sat Jan 1 23:22:32 UTC 2011


In setting up tmpfs (so not tmpmfs) on a machine that is using
zfs(v15, zfs v4) on 8.2prerelease I run out of space on the tmpfs when
copying a file of ~4.6 GB file from the zfs-filesystem to the memory
disk. This machine has 8GB of memory backed by swap on the harddisk,
so I expected the file to copy to memory without problems.

Below in detail what happens: upon rebooting the machine the tmpfs has
8GB available as can be seen below:
---
hge at PulsarX4:~/ > df -hi /tmp

Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on

tmpfs         8.2G     12K    8.2G     0%      19   39M    0%   /tmp

---

Subsequently copying a ~4.6GB file from a location in the zfs-pool to
the memory filesystem fails with no more space left message
---
hge at PulsarX4:~/ > cp ~/temp/large.iso /tmp/large_file

cp: /tmp/large_file: No space left on device

---

After this the tmpfs has shrunk to just 2.7G, obviously much less than
the 8.2G available before the copy-operation. At the same time there
are still free inodes left, so that does not appear to be the problem.
Output of the df after the copy:
---
hge at PulsarX4:~/ > df -hi /tmp

Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on

tmpfs         2.7G    2.7G    1.4M   100%      19  6.4k    0%   /tmp

---

A quick search shows the following bug-report for solaris:
http://bugs.opensolaris.org/bugdatabase/view_bug.do;jsessionid=e4ae9c32983000ef651e38edbba1?bug_id=6804661This
appears closely related as here I also try to copy a file >50% of
memory to the tmpfs and the way to reproduce appears identical to what
I did here.

As it might help spot the problem: below the information on the zfs
ARC size obtained from the output of zfs-stats. This gives:

Before the copy:
---
System Memory Statistics:

	Physical Memory:			8161.74M

	Kernel Memory:				511.64M

	DATA:				94.27%	482.31M

	TEXT:				5.73%	29.33M


ARC Size:

	Current Size (arcsize):		5.88%	404.38M

	Target Size (Adaptive, c):	100.00%	6874.44M

	Min Size (Hard Limit, c_min):	12.50%	859.31M

	Max Size (High Water, c_max):	~8:1	6874.44M

---

After the copy:

---
System Memory Statistics:
	Physical Memory:			8161.74M
	Kernel Memory:				3326.98M
	DATA:				99.12%	3297.65M
	TEXT:				0.88%	29.33M

ARC Size:
	Current Size (arcsize):		46.99%	3230.55M
	Target Size (Adaptive, c):	100.00%	6874.44M
	Min Size (Hard Limit, c_min):	12.50%	859.31M
	Max Size (High Water, c_max):	~8:1	6874.44M
---

Unfortunately I have difficulties interpreting this further than this,
so suggestions how to prevent this behavior (or further trouble shoot
this) would be appreciated as my feeling is that this should not
happen.


More information about the freebsd-stable mailing list