how to avoid copies without O_DIRECT? | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
http://kerneltrap.org/node/7563So Linus really hates O_DIRECT on files and can see no good use for it. In the referenced white paper Andrea suggests the use of O_DIRECT to eliminate CPU and memory bandwidth consumption during the process of copying to/from user space.
Indeed, lets say I have an embedded system (CPU bandwidth is not abundant). I have a device which is providing an almost never-ending stream of data. This data is DMA'ed into a large physically contiguous buffer which is mapped into a process's address space.
I want to write the data in this buffer out to a file without the CPU actually having to copy the data. O_DIRECT seems like the perfect mechanism -- the buffer will ultimately get DMA'ed straight out of my user-space buffer and out to disk (assuming I meet alignment requirements, etc...).
If O_DIRECT is frowned upon, what is the prescribed method for accomplishing a zero-copy data movement from kernel->user->kernel?
I looked at the madvise() and posix_fadvise() calls but they only seem to alter the cache behavior -- not eliminate it. And if I don't eliminate it, a copy is still taking place (unless there paging magic at play).
This question may have already been asked a whole bunch and I apologize in advance if it has (there is a lot of noise surrounding a search of "O_DIRECT").
Thanks! -Miles -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ
[Newbies FAQ] [Kernel List] [Site Home] [IETF Annouce] [Git] [Networking] [Security] [Bugtraq] [Rubini] [Photo] [Yosemite] [MIPS Linux] [ARM Linux] [Linux Security] [Linux Networking] [Linux RAID] [Linux SCSI] [Linux ACPI] [DDR & Rambus] [UNIX Filesystems] [Linux Resources]
![]() |
![]() |