From: GaryScott on
I think I understand this sufficiently but wanted to hear other's
understanding of the performance issues associated with network access
of a normal disk area. I am specifically interested in CVF or IVF
behavior (or IVF if there is significant differences from CVF). I am
unconcerned with portability to other platforms at this time.

I have prevented myself from implementing any sort of rapid search
function in an application because of fear of excessive network
traffic each time I issue the next record read in a loop searching for
specific content in the record. The particular file is direct access
with something like 10240 bytes (don't remember exactly but a multiple
of 512 bytes). So at least 10240 bytes is read each time.

So, does CVF/IVF do anything special to lessen network traffic such as
downloading a large chunk of the file on first access and performing
many subsequent reads from a local copy? that seems unlikely because
the file is multiple-access shared. Is there any thing I can do to
remove this concern (I understand I could use a database server...but
not for this application). Would a different record size be preferred
(e.g. one more efficient for TCP/IP)?
From: glen herrmannsfeldt on
GaryScott <garylscott(a)sbcglobal.net> wrote:

> I think I understand this sufficiently but wanted to hear other's
> understanding of the performance issues associated with network access
> of a normal disk area. I am specifically interested in CVF or IVF
> behavior (or IVF if there is significant differences from CVF). I am
> unconcerned with portability to other platforms at this time.

It isn't supposed to depend on the compiler. Well, I know NFS somewhat
better than some of the other network disk protocols...

> I have prevented myself from implementing any sort of rapid search
> function in an application because of fear of excessive network
> traffic each time I issue the next record read in a loop searching for
> specific content in the record. The particular file is direct access
> with something like 10240 bytes (don't remember exactly but a multiple
> of 512 bytes). So at least 10240 bytes is read each time.

This is a complicated question. Both networks and disks are getting
faster, so that maybe it doesn't matter so much as it used to.
NFS works fine with direct access. The usual transfer size
is 8K, so that might work a little better than 10K.

> So, does CVF/IVF do anything special to lessen network traffic such as
> downloading a large chunk of the file on first access and performing
> many subsequent reads from a local copy? that seems unlikely because
> the file is multiple-access shared.

The basic idea behind most network file protocols is that they
should be transparent. Things should work just the same is
they would for a local disk. NFS is well known, at least in
the Sun implementations, to do read ahead (the assumption being
sequential access). Also, Unix and many Unix-like systems will
do local disk buffering.

About 10 years ago I was working on a project reading and writing
large files, mostly NFS mounted. Once testing a program, I realized
that it was running faster than the 100 megabit ethernet could do,
though the file was about 600 megabytes. Then I remembered that
this was running on a 4G byte machine, which could cache the
whole 600 MB file.

With NFS and Unix-like systems, I believe that there is a good
chance of a local cache for reading. It is NFS tradition that
writes not be acknowledged until the data has been written to
the actual disk. That is less true now, partly because disks
have internal cache, because the OS might cache writes, and
because the client might cache them. In all three cases,
precautions are supposed to be taken, but there are overrides.

> Is there any thing I can do to
> remove this concern (I understand I could use a database server...but
> not for this application). Would a different record size be preferred
> (e.g. one more efficient for TCP/IP)?

How fast does it need to be? I would go at least to gigabit
etherent, very affordable these days for small networks.
NFS has some tunable parameters, such as the read and write size.

-- glen
From: GaryScott on
On Mar 5, 5:03 pm, glen herrmannsfeldt <g...(a)ugcs.caltech.edu> wrote:
> GaryScott <garylsc...(a)sbcglobal.net> wrote:
>
snip

> You mean multiple writers?  Unix pretty much allows programs to
> do whatever they want, including have more than one program write
> at the same time.   Windows does more locking, even not allowing
> you to read some files that you should be able to read.
>
> NFS includes a lock mechanism, but it never worked very well,
> and as far as I know, still doesn't.  

I handle locking in the application itself. The application must
signal other applications that it wants exclusive write access on a
record-by-record basis. Only one user has write access at a time, but
only to the level of an individual direct access record (and its
associated blobs). However, as far as the OS is concerned, it knows
nothing of this locking mechanism and considers the file fully shared
and unlocked.

>
snip
>

> -- glen

From: GaryScott on
On Mar 5, 5:51 pm, GaryScott <garylsc...(a)sbcglobal.net> wrote:
> On Mar 5, 5:03 pm, glen herrmannsfeldt <g...(a)ugcs.caltech.edu> wrote:> GaryScott <garylsc...(a)sbcglobal.net> wrote:
>
> snip
>
> > You mean multiple writers?  Unix pretty much allows programs to
> > do whatever they want, including have more than one program write
> > at the same time.   Windows does more locking, even not allowing
> > you to read some files that you should be able to read.
>
> > NFS includes a lock mechanism, but it never worked very well,
> > and as far as I know, still doesn't.  
>
> I handle locking in the application itself.  The application must
> signal other applications that it wants exclusive write access on a
> record-by-record basis.  Only one user has write access at a time, but
> only to the level of an individual direct access record (and its
> associated blobs).  However, as far as the OS is concerned, it knows
> nothing of this locking mechanism and considers the file fully shared
> and unlocked.
>
>

P.S. I fibbed, I actually have implemented this search function (I
forgot - oh no, the brain cells are going). What I did was slow it
down by adding a delay between read operations. :) it appears to show
performance similar to a normal oracle database search function - lol,
the secret of oracle unmasked...

>
>
>
>
>
> snip
>
> > -- glen- Hide quoted text -
>
> - Show quoted text -

From: glen herrmannsfeldt on
GaryScott <garylscott(a)sbcglobal.net> wrote:
(snip)

> I handle locking in the application itself. The application must
> signal other applications that it wants exclusive write access on a
> record-by-record basis. Only one user has write access at a time, but
> only to the level of an individual direct access record (and its
> associated blobs). However, as far as the OS is concerned, it knows
> nothing of this locking mechanism and considers the file fully shared
> and unlocked.

It seems to me that is the unix way.

-- glen