Peregrine,
> I have an application in which I'm sending small images across the
> network via channel access and I'm curious as to how many times and
> where the image buffer gets copied on its way up from the database to
> the ethernet interface.
o Device support copies the waveform data out of the device into
the record's buffer (the buffer that field bptr points to). This
make prevents the record's waveform from changing while a client is
in the middle of reading it.
o The routine dbGetField() copies from the record's buffer into
the CA server's outgoing message buffer. This copy also
converts to the clients requested data type.
o If the IOC is a little endian machine the buffer is converted
to network byte order (the new server will combine the data conversion
and the endian conversion steps).
o The socket routine "send()" copies the outgoing waveform
into an Mbuf
o In certain situations parts of the data will be copied again
if CA is unable to "hand off" all of the data to the IP kernel
in one call to "send()".
o Other copies may occur inside of the IP kernel/ network
device drivers before the data is transmitted as frames on your
LAN.
>
> Sending 15 512x31 sub-images every few seconds increases my Sparc 5
> IOC loading by up to 20%.
>
The new ca server library has the socket routines well isolated so it
should
be possible to use the WRS proprietary zero copy TCP API if
we decide that this will result in a significant improvement.
One way to get a inaccurate guess at what part of the code is using
CPU under vxWorks is to run "tt()" on an active task several times
(I would run the tt() from a console port and not a telnet port so that
the IP kernel is not influencing the result).
Jeff
- Navigate by Date:
- Prev:
gnu cross-compiler problem Peregrine McGehee
- Next:
Re: gnu cross-compiler problem Andrew Johnson
- Index:
1994
1995
1996
<1997>
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Buffer copying? Peregrine McGehee
- Next:
gnu cross-compiler problem Rolf Keitel
- Index:
1994
1995
1996
<1997>
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|