Quote:
Originally Posted by merijnv
Is there a kernel-level parameter that can be tweaked to ask the scheduler for another way of scheduling these?
Or, maybe even better, something in the environment I can set as user?
|
Quote:
Originally Posted by syg00
Nope.
|
That "Nope" is certainly correct.
Quote:
If you are passing data via a pipe, you have a (effectively) synchronous write/read arrangement.
|
But that is significantly overstating the problem.
You should be able to pass data via a pipe and still have overlapping processing.
Something is wrong with either your overall design, or the details of the way you write to each pipe.
You cannot get data out of a pipe before the other side puts the data in. So assuming the processing on the read side of the pipe requires the data, it must wait for it.
But when you write to a pipe, waiting for the other side to read the result is optional (I wish I understood the exact details myself. Some of the documentation is unclear, especially since I'm trying to use mostly the same source code between Windows and Linux. But I don't expect your situation is that complex).
Your write side almost certainly should not be waiting for the other side to read. It should be able to generate the next data as soon as it throws the last data into the pipe.
Quote:
If you can, redesign the work for better multi-tasking.
|
Of course. The first step is understanding why two out of three processes are waiting at any given moment.
If you explain a bit more about the data flow between the three processes, we might have some better ideas on how to identify and correct the undesired waits.