Saving data

Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.

You can try to adjust some of the cache and commit parameters for devb-eide.
For details go to:

http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and

http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens

“AGB” <agb32@nospam.remove.this.cam.ac.uk> wrote in message
news:3F8404DB.2010906@nospam.remove.this.cam.ac.uk

Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.

Thanks - where can I set these parameters? ie where is devb-eide started?

Presumably, I cant stop and restart it (if I turn off the filesystem, if
can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for devb-eide.
For details go to:

http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and

http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens

“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F8404DB.2010906@nospam.remove.this.cam.ac.uk> …

Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.
\

You would have to build a custom kernel image. Look in /boot/build for
sample build scripts.

mkifs is used to compile these build scripts into kernel image files (such
as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot process
allows to boot alternative image.

Jens


“AGB” <agb32@nospam.remove.this.cam.ac.uk> wrote in message
news:3F844B8B.1000609@nospam.remove.this.cam.ac.uk

Thanks - where can I set these parameters? ie where is devb-eide started?

Presumably, I cant stop and restart it (if I turn off the filesystem, if
can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:
You can try to adjust some of the cache and commit parameters for
devb-eide.
For details go to:


http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and


http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens

“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F8404DB.2010906@nospam.remove.this.cam.ac.uk> …

Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.

\

“AGB” <agb32@nospam.remove.this.cam.ac.uk> wrote in message
news:3F8404DB.2010906@nospam.remove.this.cam.ac.uk

Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems.

100MB/s who told you that!!! That’s way off. That would mean that with a 4
RAID system it would be the same speed as PC100 ram.

However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.

In article <3F844B8B.1000609@nospam.remove.this.cam.ac.uk>, agb32@nospam.remove.this.cam.ac.uk
says…

Thanks - where can I set these parameters? ie where is devb-eide started?

Presumably, I cant stop and restart it

Actually you can. You can take a look at shell scripts Eide.rst and eide.rst.kabe at:
ftp://ftp.qnx.org.ru/pub/projects/ed1k/
Eide.rst - you should change mount lines according to your configuration;
eide.rst.kabe - this script uses proposed by kabe awk-script to remount filesystems as it was before
killing devb-eide.
In both cases you should revise parameters of devb-eide driver. These scripts could be only useful
if you have NC version and willing to play with devb-eide’s options. If you have commercial version
of QNX the right way is to rebuild image (don’t use diskboot because it doesn’t pass options to
devb-eide driver anyway).

Eduard.

100MB/s who told you that!!! That’s way off. That would mean that with a 4
RAID system it would be the same speed as PC100 ram.
100MB/s is maximum transfer rate - in practice it would probably be a

bit less. Check out the datasheet available at:
http://www.seagate.com/cda/products/discsales/marketing/detail/0,1081,579,00.html

I had thought of doing this, but my 6.2.1 system doesn’t have a
/boot/build directory - the only things in /boot/ are sys/ and fs/.

I had assumed that this was because the need for this had been removed
for 6.2.1 or something. Is there anywhere I can obtain a sample build
script which would be correct for my current install? (default 6.2.1 NC
install).

Thanks.

Jens H Jorgensen wrote:
You would have to build a custom kernel image. Look in /boot/build for
sample build scripts.

mkifs is used to compile these build scripts into kernel image files (such
as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot process
allows to boot alternative image.

Jens


“AGB” <agb32@nospam.remove.this.cam.ac.uk> wrote in message
news:3F844B8B.1000609@nospam.remove.this.cam.ac.uk

Thanks - where can I set these parameters? ie where is devb-eide started?

Presumably, I cant stop and restart it (if I turn off the filesystem, if
can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for

devb-eide.

For details go to:



http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and



http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens



AGB wrote:

Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.

“AGB” <agb32@nospam.remove.this.cam.ac.uk> wrote in message
news:3F851609.1060907@nospam.remove.this.cam.ac.uk

100MB/s who told you that!!! That’s way off. That would mean that with
a 4
RAID system it would be the same speed as PC100 ram.
100MB/s is maximum transfer rate - in practice it would probably be a
bit less.

A bit less :wink: In practice it would probably be a bit less then HALF that.
And that’s for read speed…

Check out the datasheet available at:

http://www.seagate.com/cda/products/discsales/marketing/detail/0,1081,579,00.html

Try it for real :wink:

Hi Eduard,
Thanks for the scripts. I’m having a bit of a problem with them, and
wonder if you can help. My first problem was that libcam.so.2 wasn’t
found. However I solved this by copying it into /dev/shmem/ and
changing my path/ld_library_path variable in the script to include this.
However, it seems that my system won’t re mount things. When it gets
to the mount commands in the scripts, it says:
eg. mounting /dev/hd1t79
mount: cant mount / (type qnx4)
mount: possible reason: invalid arguement

When I look at /dev/hd1t79 after running the script, it doesn’t exist.

Any ideas (QNX 6.2.1 NC)?

Thanks.

ed1k wrote:

In article <> 3F844B8B.1000609@nospam.remove.this.cam.ac.uk> >, > agb32@nospam.remove.this.cam.ac.uk
says…

Thanks - where can I set these parameters? ie where is devb-eide started?

Presumably, I cant stop and restart it


Actually you can. You can take a look at shell scripts Eide.rst and eide.rst.kabe at:
ftp://ftp.qnx.org.ru/pub/projects/ed1k/
Eide.rst - you should change mount lines according to your configuration;
eide.rst.kabe - this script uses proposed by kabe awk-script to remount filesystems as it was before
killing devb-eide.
In both cases you should revise parameters of devb-eide driver. These scripts could be only useful
if you have NC version and willing to play with devb-eide’s options. If you have commercial version
of QNX the right way is to rebuild image (don’t use diskboot because it doesn’t pass options to
devb-eide driver anyway).

Eduard.

It is probably because you have the NC version.

I am not sure what you can do to solve this with the NC version - anybody?


Jens


“AGB” <agb32@nospam.remove.this.cam.ac.uk> wrote in message
news:3F851A85.307@nospam.remove.this.cam.ac.uk

I had thought of doing this, but my 6.2.1 system doesn’t have a
/boot/build directory - the only things in /boot/ are sys/ and fs/.

I had assumed that this was because the need for this had been removed
for 6.2.1 or something. Is there anywhere I can obtain a sample build
script which would be correct for my current install? (default 6.2.1 NC
install).

Thanks.

Jens H Jorgensen wrote:
You would have to build a custom kernel image. Look in /boot/build for
sample build scripts.

mkifs is used to compile these build scripts into kernel image files (such
as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot
process
allows to boot alternative image.

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F844B8B.1000609@nospam.remove.this.cam.ac.uk> …

Thanks - where can I set these parameters? ie where is devb-eide started?

Presumably, I cant stop and restart it (if I turn off the filesystem, if
can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for

devb-eide.

For details go to:




http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and




http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens



AGB wrote:
Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.

Hmm, well I’ve now successfully managed to change some of the harddrive
parameters using the script from Eduard – thanks – but it hasn’t
helped my application!

I have a high priority process which is a frame grabber, grabbing data
into shared memory - which another lower priority process then writes to
disk when it has time (it doesn’t necessarily save the newest grabbed
data, ie a backlog can build up). However, I find that for some reason
the writing to disk slows down the higher priority process, and so
frames are missed - which is very bad news!!!

I had thought that qnx would allow a higher priority process to have
priority, but it seems that the hardware (ie hard disk) is stopping the
grabbing process from writing to memory for a bit or something… and so
causing the grabbing process to skip frames.

Comments?

Thanks.

Jens H Jorgensen wrote:

It is probably because you have the NC version.

I am not sure what you can do to solve this with the NC version - anybody?


Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F851A85.307@nospam.remove.this.cam.ac.uk> …

I had thought of doing this, but my 6.2.1 system doesn’t have a
/boot/build directory - the only things in /boot/ are sys/ and fs/.

I had assumed that this was because the need for this had been removed
for 6.2.1 or something. Is there anywhere I can obtain a sample build
script which would be correct for my current install? (default 6.2.1 NC
install).

Thanks.

Jens H Jorgensen wrote:
You would have to build a custom kernel image. Look in /boot/build for
sample build scripts.

mkifs is used to compile these build scripts into kernel image files (such
as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot

process

allows to boot alternative image.

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F844B8B.1000609@nospam.remove.this.cam.ac.uk> …

Thanks - where can I set these parameters? ie where is devb-eide started?

Presumably, I cant stop and restart it (if I turn off the filesystem, if
can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for

devb-eide.

For details go to:





http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and





http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens



AGB wrote:

Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.
\

What priority are you running the frame grabber at? It should be
above 21 (since that is the priority of the disk drivers interrupt
thread)

AGB <agb32@nospam.remove.this.cam.ac.uk> wrote:

Hmm, well I’ve now successfully managed to change some of the harddrive
parameters using the script from Eduard – thanks – but it hasn’t
helped my application!

I have a high priority process which is a frame grabber, grabbing data
into shared memory - which another lower priority process then writes to
disk when it has time (it doesn’t necessarily save the newest grabbed
data, ie a backlog can build up). However, I find that for some reason
the writing to disk slows down the higher priority process, and so
frames are missed - which is very bad news!!!

I had thought that qnx would allow a higher priority process to have
priority, but it seems that the hardware (ie hard disk) is stopping the
grabbing process from writing to memory for a bit or something… and so
causing the grabbing process to skip frames.

Comments?

Thanks.

Jens H Jorgensen wrote:
It is probably because you have the NC version.

I am not sure what you can do to solve this with the NC version - anybody?


Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F851A85.307@nospam.remove.this.cam.ac.uk> …

I had thought of doing this, but my 6.2.1 system doesn’t have a
/boot/build directory - the only things in /boot/ are sys/ and fs/.

I had assumed that this was because the need for this had been removed
for 6.2.1 or something. Is there anywhere I can obtain a sample build
script which would be correct for my current install? (default 6.2.1 NC
install).

Thanks.

Jens H Jorgensen wrote:
You would have to build a custom kernel image. Look in /boot/build for
sample build scripts.

mkifs is used to compile these build scripts into kernel image files (such
as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot

process

allows to boot alternative image.

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F844B8B.1000609@nospam.remove.this.cam.ac.uk> …

Thanks - where can I set these parameters? ie where is devb-eide started?

Presumably, I cant stop and restart it (if I turn off the filesystem, if
can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for

devb-eide.

For details go to:





http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and





http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens



AGB wrote:

Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.

\


cburgess@qnx.com

Well - it is a little hard to say what is going on.

I think I would try to perform following experiements:

Hmm, well I’ve now successfully managed to change some of the harddrive
parameters using the script from Eduard – thanks – but it hasn’t
helped my application!

I have a high priority process which is a frame grabber, grabbing data
into shared memory - which another lower priority process then writes to
disk when it has time (it doesn’t necessarily save the newest grabbed
data, ie a backlog can build up). However, I find that for some reason
the writing to disk slows down the higher priority process, and so
frames are missed - which is very bad news!!!

I had thought that qnx would allow a higher priority process to have
priority, but it seems that the hardware (ie hard disk) is stopping the
grabbing process from writing to memory for a bit or something… and so
causing the grabbing process to skip frames.

Comments?

Thanks.

Jens H Jorgensen wrote:
It is probably because you have the NC version.

I am not sure what you can do to solve this with the NC version -
anybody?


Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F851A85.307@nospam.remove.this.cam.ac.uk> …

I had thought of doing this, but my 6.2.1 system doesn’t have a
/boot/build directory - the only things in /boot/ are sys/ and fs/.

I had assumed that this was because the need for this had been removed
for 6.2.1 or something. Is there anywhere I can obtain a sample build
script which would be correct for my current install? (default 6.2.1 NC
install).

Thanks.

Jens H Jorgensen wrote:
You would have to build a custom kernel image. Look in /boot/build for
sample build scripts.

mkifs is used to compile these build scripts into kernel image files
(such
as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot

process

allows to boot alternative image.

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F844B8B.1000609@nospam.remove.this.cam.ac.uk> …

Thanks - where can I set these parameters? ie where is devb-eide
started?

Presumably, I cant stop and restart it (if I turn off the filesystem, if
can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for

devb-eide.

For details go to:






http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and






http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens



AGB wrote:

Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.

\

I don’t think thats the problem - I see the same effect running at any
process up to 63. I’m therefore thinking that it’s a hardware problem -
ie maybe the disk drive is holding the processor off or away from
memory while it saves a chunk…


Colin Burgess wrote:

What priority are you running the frame grabber at? It should be
above 21 (since that is the priority of the disk drivers interrupt
thread)

AGB <> agb32@nospam.remove.this.cam.ac.uk> > wrote:

Hmm, well I’ve now successfully managed to change some of the harddrive
parameters using the script from Eduard – thanks – but it hasn’t
helped my application!


I have a high priority process which is a frame grabber, grabbing data
into shared memory - which another lower priority process then writes to
disk when it has time (it doesn’t necessarily save the newest grabbed
data, ie a backlog can build up). However, I find that for some reason
the writing to disk slows down the higher priority process, and so
frames are missed - which is very bad news!!!


I had thought that qnx would allow a higher priority process to have
priority, but it seems that the hardware (ie hard disk) is stopping the
grabbing process from writing to memory for a bit or something… and so
causing the grabbing process to skip frames.


Comments?


Thanks.


Jens H Jorgensen wrote:

It is probably because you have the NC version.

I am not sure what you can do to solve this with the NC version - anybody?


Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F851A85.307@nospam.remove.this.cam.ac.uk> …


I had thought of doing this, but my 6.2.1 system doesn’t have a
/boot/build directory - the only things in /boot/ are sys/ and fs/.

I had assumed that this was because the need for this had been removed
for 6.2.1 or something. Is there anywhere I can obtain a sample build
script which would be correct for my current install? (default 6.2.1 NC
install).

Thanks.

Jens H Jorgensen wrote:
You would have to build a custom kernel image. Look in /boot/build for
sample build scripts.

mkifs is used to compile these build scripts into kernel image files (such
as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot

process


allows to boot alternative image.

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F844B8B.1000609@nospam.remove.this.cam.ac.uk> …

Thanks - where can I set these parameters? ie where is devb-eide started?

Presumably, I cant stop and restart it (if I turn off the filesystem, if
can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for

devb-eide.

For details go to:





http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html


and





http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html


Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens



AGB wrote:


Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.


\

Thanks for patience! I’ve tried both of these… at >21 it still has
the same problem.
If I run the save data process without saving, it works perfectly.
Actually, I run it just saving a time stamp, and not the data, and the
timestamp is then always incremented at the correct amount between
frames… So it could be the shared memory access locks, but I would
have thought that on a strict real time system the high priority process
should always be able to run? If it is the problem with shared memory
access, how can I get around then? Maybe by writing smaller chunks of
data at a time? (currently 65536 bytes at a time)

Thanks.

Jens H Jorgensen wrote:

Well - it is a little hard to say what is going on.

I think I would try to perform following experiements:

Hmm, well I’ve now successfully managed to change some of the harddrive
parameters using the script from Eduard – thanks – but it hasn’t
helped my application!

I have a high priority process which is a frame grabber, grabbing data
into shared memory - which another lower priority process then writes to
disk when it has time (it doesn’t necessarily save the newest grabbed
data, ie a backlog can build up). However, I find that for some reason
the writing to disk slows down the higher priority process, and so
frames are missed - which is very bad news!!!

I had thought that qnx would allow a higher priority process to have
priority, but it seems that the hardware (ie hard disk) is stopping the
grabbing process from writing to memory for a bit or something… and so
causing the grabbing process to skip frames.

Comments?

Thanks.

Jens H Jorgensen wrote:

It is probably because you have the NC version.

I am not sure what you can do to solve this with the NC version -

anybody?


Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F851A85.307@nospam.remove.this.cam.ac.uk> …


I had thought of doing this, but my 6.2.1 system doesn’t have a
/boot/build directory - the only things in /boot/ are sys/ and fs/.

I had assumed that this was because the need for this had been removed
for 6.2.1 or something. Is there anywhere I can obtain a sample build
script which would be correct for my current install? (default 6.2.1 NC
install).

Thanks.

Jens H Jorgensen wrote:
You would have to build a custom kernel image. Look in /boot/build for
sample build scripts.

mkifs is used to compile these build scripts into kernel image files

(such

as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot

process


allows to boot alternative image.

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F844B8B.1000609@nospam.remove.this.cam.ac.uk> …

Thanks - where can I set these parameters? ie where is devb-eide

started?

Presumably, I cant stop and restart it (if I turn off the filesystem, if
can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for

devb-eide.

For details go to:






http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and






http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens



AGB wrote:


Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing is
done. This high activity then causes problems as it slows down some of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.

\

Are you using Imagenation’s frame grabber driver?


Jens

“AGB” <agb32@nospam.remove.this.cam.ac.uk> wrote in message
news:3F85819C.8030801@nospam.remove.this.cam.ac.uk

Thanks for patience! I’ve tried both of these… at >21 it still has
the same problem.
If I run the save data process without saving, it works perfectly.
Actually, I run it just saving a time stamp, and not the data, and the
timestamp is then always incremented at the correct amount between
frames… So it could be the shared memory access locks, but I would
have thought that on a strict real time system the high priority process
should always be able to run? If it is the problem with shared memory
access, how can I get around then? Maybe by writing smaller chunks of
data at a time? (currently 65536 bytes at a time)

Thanks.

Jens H Jorgensen wrote:
Well - it is a little hard to say what is going on.

I think I would try to perform following experiements:

Hmm, well I’ve now successfully managed to change some of the harddrive
parameters using the script from Eduard – thanks – but it hasn’t
helped my application!

I have a high priority process which is a frame grabber, grabbing data
into shared memory - which another lower priority process then writes to
disk when it has time (it doesn’t necessarily save the newest grabbed
data, ie a backlog can build up). However, I find that for some reason
the writing to disk slows down the higher priority process, and so
frames are missed - which is very bad news!!!

I had thought that qnx would allow a higher priority process to have
priority, but it seems that the hardware (ie hard disk) is stopping the
grabbing process from writing to memory for a bit or something… and so
causing the grabbing process to skip frames.

Comments?

Thanks.

Jens H Jorgensen wrote:

It is probably because you have the NC version.

I am not sure what you can do to solve this with the NC version -

anybody?


Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F851A85.307@nospam.remove.this.cam.ac.uk> …


I had thought of doing this, but my 6.2.1 system doesn’t have a
/boot/build directory - the only things in /boot/ are sys/ and fs/.

I had assumed that this was because the need for this had been removed
for 6.2.1 or something. Is there anywhere I can obtain a sample build
script which would be correct for my current install? (default 6.2.1
NC
install).

Thanks.

Jens H Jorgensen wrote:
You would have to build a custom kernel image. Look in /boot/build for
sample build scripts.

mkifs is used to compile these build scripts into kernel image files

(such

as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot

process


allows to boot alternative image.

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F844B8B.1000609@nospam.remove.this.cam.ac.uk> …

Thanks - where can I set these parameters? ie where is devb-eide

started?

Presumably, I cant stop and restart it (if I turn off the filesystem,
if
can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for

devb-eide.

For details go to:







http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and







http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens



AGB wrote:


Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data
rate
is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing
is
done. This high activity then causes problems as it slows down some
of
my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.


\

No, Matrox genesis native library. Frame grabber: Matrox meteor II/dig.
A pci frame grabber, which allows asynchronous operation - ie I can tell
it to grab, and do something else while it’s waiting for the next frame…


Jens H Jorgensen wrote:

Are you using Imagenation’s frame grabber driver?


Jens

“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F85819C.8030801@nospam.remove.this.cam.ac.uk> …

Thanks for patience! I’ve tried both of these… at >21 it still has
the same problem.
If I run the save data process without saving, it works perfectly.
Actually, I run it just saving a time stamp, and not the data, and the
timestamp is then always incremented at the correct amount between
frames… So it could be the shared memory access locks, but I would
have thought that on a strict real time system the high priority process
should always be able to run? If it is the problem with shared memory
access, how can I get around then? Maybe by writing smaller chunks of
data at a time? (currently 65536 bytes at a time)

Thanks.

Jens H Jorgensen wrote:

Well - it is a little hard to say what is going on.

I think I would try to perform following experiements:

  • Raise the priority of the capture thread/process beyond devb-eide (21)
  • Run the save data process run but without writing to the disk to see

if

any shared memory access locks are holding up the capture process.

\

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F8578CD.2020305@nospam.remove.this.cam.ac.uk> …


Hmm, well I’ve now successfully managed to change some of the harddrive
parameters using the script from Eduard – thanks – but it hasn’t
helped my application!

I have a high priority process which is a frame grabber, grabbing data
into shared memory - which another lower priority process then writes to
disk when it has time (it doesn’t necessarily save the newest grabbed
data, ie a backlog can build up). However, I find that for some reason
the writing to disk slows down the higher priority process, and so
frames are missed - which is very bad news!!!

I had thought that qnx would allow a higher priority process to have
priority, but it seems that the hardware (ie hard disk) is stopping the
grabbing process from writing to memory for a bit or something… and so
causing the grabbing process to skip frames.

Comments?

Thanks.

Jens H Jorgensen wrote:


It is probably because you have the NC version.

I am not sure what you can do to solve this with the NC version -

anybody?

\

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F851A85.307@nospam.remove.this.cam.ac.uk> …



I had thought of doing this, but my 6.2.1 system doesn’t have a
/boot/build directory - the only things in /boot/ are sys/ and fs/.

I had assumed that this was because the need for this had been removed
for 6.2.1 or something. Is there anywhere I can obtain a sample build
script which would be correct for my current install? (default 6.2.1

NC

install).

Thanks.

Jens H Jorgensen wrote:
You would have to build a custom kernel image. Look in /boot/build for
sample build scripts.

mkifs is used to compile these build scripts into kernel image files

(such


as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot

process



allows to boot alternative image.

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F844B8B.1000609@nospam.remove.this.cam.ac.uk> …

Thanks - where can I set these parameters? ie where is devb-eide

started?


Presumably, I cant stop and restart it (if I turn off the filesystem,

if

can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for

devb-eide.

For details go to:






http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and






http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens



AGB wrote:



Hi,
I have an application which requires me to write about 3MB/s to disk
continuously. I have a modern harddrive, and am told the max data

rate

is over 100MB/s, so in theory I should have no problems. However, I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing

is

done. This high activity then causes problems as it slows down some

of

my processes. Is there any way to get QNX to write data regularly at
the (slow) 3MB/s rate as it is ready?

Thanks.

\

This is a little off topic - but anyway:

Is GNL now ported and readily availabe for QNX 6.2?

and what did you have to pay for it?


Thanks
Jens


“AGB” <agb32@nospam.remove.this.cam.ac.uk> wrote in message
news:3F858E7E.30409@nospam.remove.this.cam.ac.uk

No, Matrox genesis native library. Frame grabber: Matrox meteor II/dig.
A pci frame grabber, which allows asynchronous operation - ie I can tell
it to grab, and do something else while it’s waiting for the next frame…


Jens H Jorgensen wrote:
Are you using Imagenation’s frame grabber driver?


Jens

“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F85819C.8030801@nospam.remove.this.cam.ac.uk> …

Thanks for patience! I’ve tried both of these… at >21 it still has
the same problem.
If I run the save data process without saving, it works perfectly.
Actually, I run it just saving a time stamp, and not the data, and the
timestamp is then always incremented at the correct amount between
frames… So it could be the shared memory access locks, but I would
have thought that on a strict real time system the high priority process
should always be able to run? If it is the problem with shared memory
access, how can I get around then? Maybe by writing smaller chunks of
data at a time? (currently 65536 bytes at a time)

Thanks.

Jens H Jorgensen wrote:

Well - it is a little hard to say what is going on.

I think I would try to perform following experiements:

  • Raise the priority of the capture thread/process beyond devb-eide
    (21)
  • Run the save data process run but without writing to the disk to see

if

any shared memory access locks are holding up the capture process.

\

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F8578CD.2020305@nospam.remove.this.cam.ac.uk> …


Hmm, well I’ve now successfully managed to change some of the
harddrive
parameters using the script from Eduard – thanks – but it hasn’t
helped my application!

I have a high priority process which is a frame grabber, grabbing data
into shared memory - which another lower priority process then writes
to
disk when it has time (it doesn’t necessarily save the newest grabbed
data, ie a backlog can build up). However, I find that for some
reason
the writing to disk slows down the higher priority process, and so
frames are missed - which is very bad news!!!

I had thought that qnx would allow a higher priority process to have
priority, but it seems that the hardware (ie hard disk) is stopping
the
grabbing process from writing to memory for a bit or something… and
so
causing the grabbing process to skip frames.

Comments?

Thanks.

Jens H Jorgensen wrote:


It is probably because you have the NC version.

I am not sure what you can do to solve this with the NC version -

anybody?

\

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F851A85.307@nospam.remove.this.cam.ac.uk> …



I had thought of doing this, but my 6.2.1 system doesn’t have a
/boot/build directory - the only things in /boot/ are sys/ and fs/.

I had assumed that this was because the need for this had been
removed
for 6.2.1 or something. Is there anywhere I can obtain a sample
build
script which would be correct for my current install? (default
6.2.1

NC

install).

Thanks.

Jens H Jorgensen wrote:
You would have to build a custom kernel image. Look in /boot/build
for
sample build scripts.

mkifs is used to compile these build scripts into kernel image files

(such


as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot

process



allows to boot alternative image.

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F844B8B.1000609@nospam.remove.this.cam.ac.uk> …

Thanks - where can I set these parameters? ie where is devb-eide

started?


Presumably, I cant stop and restart it (if I turn off the
filesystem,

if

can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for

devb-eide.

For details go to:







http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and







http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens



AGB wrote:



Hi,
I have an application which requires me to write about 3MB/s to
disk
continuously. I have a modern harddrive, and am told the max data

rate

is over 100MB/s, so in theory I should have no problems. However,
I
find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing

is

done. This high activity then causes problems as it slows down
some

of

my processes. Is there any way to get QNX to write data regularly
at
the (slow) 3MB/s rate as it is ready?

Thanks.


\

Yes, just about. It seems to work for 6.2.1 anyway. I couldn’t get it
working with the meteor II/dig with qnx 6.2 or 6.1, and with enough
pestering, matrox eventually managed to get one working for 6.2.1.
I don’t remember the price - of order 1000 pounds, maybe more like 600 -
which I originally though a lot for software which didn’t work! But
it does now…
I get the impression that they’re not supporting it very well for qnx
though.

Jens H Jorgensen wrote:

This is a little off topic - but anyway:

Is GNL now ported and readily availabe for QNX 6.2?

and what did you have to pay for it?


Thanks
Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F858E7E.30409@nospam.remove.this.cam.ac.uk> …

No, Matrox genesis native library. Frame grabber: Matrox meteor II/dig.
A pci frame grabber, which allows asynchronous operation - ie I can tell
it to grab, and do something else while it’s waiting for the next frame…


Jens H Jorgensen wrote:

Are you using Imagenation’s frame grabber driver?


Jens

“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F85819C.8030801@nospam.remove.this.cam.ac.uk> …


Thanks for patience! I’ve tried both of these… at >21 it still has
the same problem.
If I run the save data process without saving, it works perfectly.
Actually, I run it just saving a time stamp, and not the data, and the
timestamp is then always incremented at the correct amount between
frames… So it could be the shared memory access locks, but I would
have thought that on a strict real time system the high priority process
should always be able to run? If it is the problem with shared memory
access, how can I get around then? Maybe by writing smaller chunks of
data at a time? (currently 65536 bytes at a time)

Thanks.

Jens H Jorgensen wrote:


Well - it is a little hard to say what is going on.

I think I would try to perform following experiements:

  • Raise the priority of the capture thread/process beyond devb-eide

(21)

  • Run the save data process run but without writing to the disk to see

if


any shared memory access locks are holding up the capture process.

\

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F8578CD.2020305@nospam.remove.this.cam.ac.uk> …



Hmm, well I’ve now successfully managed to change some of the

harddrive

parameters using the script from Eduard – thanks – but it hasn’t
helped my application!

I have a high priority process which is a frame grabber, grabbing data
into shared memory - which another lower priority process then writes

to

disk when it has time (it doesn’t necessarily save the newest grabbed
data, ie a backlog can build up). However, I find that for some

reason

the writing to disk slows down the higher priority process, and so
frames are missed - which is very bad news!!!

I had thought that qnx would allow a higher priority process to have
priority, but it seems that the hardware (ie hard disk) is stopping

the

grabbing process from writing to memory for a bit or something… and

so

causing the grabbing process to skip frames.

Comments?

Thanks.

Jens H Jorgensen wrote:



It is probably because you have the NC version.

I am not sure what you can do to solve this with the NC version -

anybody?


\

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F851A85.307@nospam.remove.this.cam.ac.uk> …




I had thought of doing this, but my 6.2.1 system doesn’t have a
/boot/build directory - the only things in /boot/ are sys/ and fs/.

I had assumed that this was because the need for this had been

removed

for 6.2.1 or something. Is there anywhere I can obtain a sample

build

script which would be correct for my current install? (default

6.2.1

NC


install).

Thanks.

Jens H Jorgensen wrote:
You would have to build a custom kernel image. Look in /boot/build

for

sample build scripts.

mkifs is used to compile these build scripts into kernel image files

(such



as .boot and .altboot)

Replace .altboot with the new kernel boot image and it ESC when boot

process




allows to boot alternative image.

Jens


“AGB” <> agb32@nospam.remove.this.cam.ac.uk> > wrote in message
news:> 3F844B8B.1000609@nospam.remove.this.cam.ac.uk> …

Thanks - where can I set these parameters? ie where is devb-eide

started?



Presumably, I cant stop and restart it (if I turn off the

filesystem,

if


can’t load itself), so will have to reboot each time?

Thanks.

Jens H Jorgensen wrote:

You can try to adjust some of the cache and commit parameters for

devb-eide.

For details go to:






http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/d/devb-eide.html

and






http://www.qnx.com/developer/docs/momentics621_docs/neutrino/utilities/i/io-blk.so.html

Parameters tgat you want to look at are:

cache=2m,noatime,delwri=0,commit=high


Jens



AGB wrote:




Hi,
I have an application which requires me to write about 3MB/s to

disk

continuously. I have a modern harddrive, and am told the max data

rate


is over 100MB/s, so in theory I should have no problems. However,

I

find that QNX seems to be writing data in clumps, ie very low cpu
activity for a few seconds, followed by high activity while writing

is


done. This high activity then causes problems as it slows down

some

of


my processes. Is there any way to get QNX to write data regularly

at

the (slow) 3MB/s rate as it is ready?

Thanks.

\