Re: File I/O in a Realtime Process

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 12 Apr 2012, Moore, Thomas (FtWorth) wrote:
> In reviewing the documentation for the PREEMPT_RT patch, it's made
> pretty clear that performing file I/O (or page faults in general)
> will degrade realtime performance. The "HOWTO: Build an
> RT-application" on the wiki also states that page faults from one
> application will not interfere with the realtime performance of an
> application. Based on this understanding, if a system utilizing the
> PREEMPT_RT patch had requirements to perform file I/O, would it be
> required to have a separate non-realtime process that performs this
> task or would it be possible to use a low priority thread in the
> realtime process?

The point is, that file I/O is not deterministic by any means, so it's
not recommended to use file operations in your high priority task.

So if you do file I/O form a non-rt thread in the same process it does
not affect the rt-task except for the following:

 - TLB shootdown interrupts might interfere minimally (you probably
   won't notice)

 - page faults processing can hold mmap semaphore of the process for
   some time, which might affect your rt task if it uses
   pthread_mutexes which are shared and not marked private or some
   other form of process shared memory which requires mmap sem to be
   held.

Aside of that, it's pretty much safe to do the file I/O from a non-rt
task within the same process.

Thanks,

	tglx
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux