OmegaPhil:
> It has now been some time since I got the kernel memory allocation
> failures, so clearly the libau hack has fixed it - thanks.
Glad to hear that!
(Honestly speaking, I totally forgot about this issue)
> In the manpage, please can you change 'If you have a directory which has
> millions of files' to say 'tens of thousands of files', and it would be
> useful to mention 'page allocation failure' somehow so that its easy for
:::
How about the attached diff?
> rsync: readdir("/omega1-storage-4/." (in backups)): Invalid argument (22)=
Hmm, won't you investigate it a little more?
- which systemcall returned EINVAL(22)?
- what parameter did rsync pass to the systemcall (or readdir)?
And is your $LIBAU set to "all"?
> This appears to have happened after I upgraded the kernel to v4.3.3-5,
Is this version debian kernel pkg's?
According to your post in last year, your system is
4.2.0-1-amd64 #1 SMP Debian 4.2.5-1 (2015-10-27) x86_64
GNU/Linux - Debian Testing standard kernel.
If this problem is specific to debian v4.3.3-5 kernel, then I will try
finding the changes made in
1. vanilla v4.3.3
2. debian v4.3.3-5
particulary around ioctl(2).
J. R. Okajima
diff --git a/aufs.in.5 b/aufs.in.5
index 38b0884..f2e4875 100644
--- a/aufs.in.5
+++ b/aufs.in.5
@@ -304,7 +304,7 @@ The default value is \*[AUFS_DIRWH_DEF].
Specifies a size of internal VDIR block which is allocated at a time in
byte.
The VDIR block will be allocated several times when necessary. If your
-directory has millions of files, you may want to expand this size.
+directory has tens of thousands of files, you may want to expand this size.
The default value is defined as \*[AUFS_RDBLK_DEF].
The size has to be lager than NAME_MAX (usually 255) and kmalloc\-able
(the maximum limit depends on your system. at least 128KB is available
@@ -324,7 +324,7 @@ Specifies a size of internal VDIR hash table which is used
to compare
the file names under the same named directory on multiple branches.
The VDIR hash table will be allocated in readdir(3)/getdents(2),
rmdir(2) and rename(2) for the existing target directory. If your
-directory has millions of files, you may want to expand this size.
+directory has tens of thousands of files, you may want to expand this size.
The default value is defined as \*[AUFS_RDHASH_DEF].
The size has to be lager than zero, and it will be multiplied by 4 or 8
(for 32\-bit and 64\-bit respectively, currently). The result must be
@@ -1307,7 +1307,7 @@ During building dir blocks, aufs creates hash list
(hashed and divided by
the entry is whiteout-ed by its upper branch or already listed.
These values are suitable for normal environments. But you may have
-millions of files or very long filenames under a single directory. For
+tens of tousands of files or very long filenames under a single directory. For
such cases, you may need to customize these values by specifying rdblk=
and rdhash= aufs mount options.
@@ -1330,7 +1330,7 @@ not, the number of comparison will be 4. 2 memory
allocations
and 4 comparison costs low (even if the directory is opened for a long
time). So you do not need to customize.
-If your directory has millions of files, the you will need to specify
+If your directory has tens of thousands of files, the you will need to specify
rdblk= and rdhash=.
.nf
@@ -1381,8 +1381,9 @@ If you use pathconf(3)/fpathconf(3) with _PC_LINK_MAX for
aufs, you need
to use libau.so.
.SS VDIR/readdir(3) in user\-space (RDU)
-If you have a directory which has millions of files, aufs VDIR consumes
-much memory. You may meet "out of memory" message due to
+If you have a directory which has tens of thousands of files, aufs VDIR
consumes
+much memory. You may meet "out of memory" message or "page allocation
+failure" due to
the memory fragmentation or real starvation.
In this case, RDU (readdir(3) in user\-space) may help you.
Because the kernel memory space cannot be swappable and consuming much
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140