2007-09-04 16:53:18

by Guilherme Vilela

[permalink] [raw]
Subject: Problem to recognize that the file system is full

Hi,
I'm tryng to mount a nfs file system with the option async and run a
program that writes to the file system. The problem is that the
program keep writing even when the file system is full. It appears
that the nfs dont see that the file system is full and keeps writing
to the cache. This program does'nt occur when mounting with the sync
option or with async and noac option, but the performance get very
poor and that is important to my application. The problem doesnt occur
too with the local file system. I'm running linux centos 5.0.

Below is my test program.
Any idea how to resolve this problem?

Thanks,
Guilherme


//io-stress.cpp

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
int i = 0;
string roller( "|/-\\" );
string sample( "*", 1024 );
ofstream ofs( "io-stress.txt" );
ofs.exceptions( ios::failbit | ios::badbit );

while ( ofs )
{
ofs << sample << endl << flush;
ofs.flush();
if ( i == 3 )
i = 0;
cout << "\b" << roller[i++];
}
ofs.close();
return 0;
}


2007-09-06 12:48:33

by Jan Engelhardt

[permalink] [raw]
Subject: Re: Problem to recognize that the file system is full


On Sep 4 2007 13:53, Guilherme Vilela wrote:
>Hi,
>I'm tryng to mount a nfs file system with the option async and run a
>program that writes to the file system. The problem is that the
>program keep writing even when the file system is full.

man 5 exports

async This option allows the NFS server to violate the NFS protocol
and reply to requests before any changes made by that request
have been committed to stable storage (e.g. disc drive).

>It appears
>that the nfs dont see that the file system is full and keeps writing
>to the cache. This program does'nt occur when mounting with the sync
>option or with async and noac option, but the performance get very
>poor and that is important to my application. The problem doesnt occur
>too with the local file system. I'm running linux centos 5.0.

About ac/localhost, I am not really sure what makes it work.

2007-09-06 20:58:57

by David Newall

[permalink] [raw]
Subject: Re: Problem to recognize that the file system is full

Jan Engelhardt wrote:
> On Sep 4 2007 13:53, Guilherme Vilela wrote:
>
>> I'm tryng to mount a nfs file system with the option async and run a
>> program that writes to the file system. The problem is that the
>> program keep writing even when the file system is full.
>>
>
> man 5 exports
>
> async This option allows the NFS server to violate the NFS protocol
> and reply to requests before any changes made by that request
> have been committed to stable storage (e.g. disc drive).
>

(That means it's a feature.)

>> This program does'nt occur when mounting with the sync
>> option or with async and noac option, but the performance get very
>> poor and that is important to my application. The problem doesnt occur
>> too with the local file system. I'm running linux centos 5.0.
>>
>
> About ac/localhost, I am not really sure what makes it work.
man 5 nfs

noac Disable attribute caching, and force synchronous writes. This
extracts a server performance penalty but it allows two different
NFS clients to get reasonable good results when both clients are
actively writing to common filesystem on the server.