Date: Sat, 15 Nov 1997 21:51:39 -0800 (PST) From: "Jamil J. Weatherbee" <jamil@trojanhorse.ml.org> To: freebsd-hackers@freebsd.org Subject: AIOX Analog driver statistical analysis Message-ID: <Pine.BSF.3.96.971115213248.273B-100000@trojanhorse.ml.org>
next in thread | raw e-mail | index | archive | help
I conducted a number of test trials doing 12bit analog sampling across 48 channels with this board and driver. The system is freebsd-2.2.5 stable with aiox driver, AIO8-P analog board and 3 external multiplexers, 48 channels total are being sampled. This is a NexGen-100 Disklessly booting system. I don't know what the computational/io performance is compared to something like a PPro but I plan on running it on a PPro-180 and finding out. The cpu time is for the driver and a process using sleeping on select to determine which channels to read. Aggregate Sample Frequency Percent Cpu Time 32 hz 2% 62.5 hz 3% 125 hz 6.2% 250 hz 12.5% 500 hz 25% 1000 hz 45% 2000 hz 90% 16000 hz Saturated But No Overruns The performance is linear (below saturation) and the sample freq to percent cpu has a 99.9% correlation. The equation: %Cpu = 0.9477 + 0.044606*(Sample Freq) Gives a very good approximation of %Cpu I wonder just how much faster a PPro or Pentium is then a NexGen machine (this is in purely integer performance since I am not doing any calculations in the user process). Keep in mind that select returns as soon as a single entry is available in any channels fifo. I am thinking about adding an ioctl() that would allow the user to specify a select() trigger point, say they could tell the driver to not do a selwakeup() unless the fifo is more than half full. Of course using blocking I/O with huge buffers solves this a bit (and I will be testing that also), but that precludes any kind of virtual multitasking in a single code thread for multiple channels.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.971115213248.273B-100000>