Another idea might be to enhance the swapper. Using interleaved swap
across a number of SCSI disks is a poor-man's way of getting serious
disk bandwidth.
My seacrate's can do around 15MB/sec to the platter. My test machine's
swap is spread across three of them, giving me 45MB/sec of swap bandwidth.
Of course, that's with relatively expensive drives and a U2W/LVD SCSI bus
(80MB/sec bus).
Another possibility is to purchase a single large, cheap DMA/IDE drive.
IBM has a number of 20+ GB drives that can transfer (I believe) 20MB/sec+
from the platter. You get one of those babies and you can use a raw
partition to hold part of your decompressed video stream. No memory is
used at all in this case, you depend entirely on the disk's bandwidth to
push the data out and pull it in as needed. If the disk is dedicated,
this should be doable.
Using a raw partition (e.g. like /dev/rda5a) is beneficial if you intend
to do your own cache management. Using a block partition (e.g. like
/dev/da5a) is beneficial if you want the system to manage the caching
for you but will result in lower I/O bandwidth due to the extra copy.
You can also implement a multi-process scheme to stage the data in and out
of memory. One process would be responsible for the cache management and
would do lookaheads and other requests, with the cache implemented as a
shared-memory segment (see shmat, shmdt, shmctl, shmget). The other
process would map the same shared memory segment and use the results.
You could use SysV semaphores (see semctl, semget, and semop) for locking.
-Matt
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message