Stuart Bailey wrote:
I'm having trouble with a process taking too long, and holding up other processes.
Basically, the process produces a bitmap showing a map of the geographical position, with a number of feature plotted. Whilst this is going on, data from a GPS receiver is being displayed on screen. These are separate processes.
However, when the map is being produced, the data display freezes. Once the map is finished, the data display continues as if nothing happened.
I've tried running the mapping process under nice, with a priority value of 20 (minimum), but this has made no significant improvement. Is there a way to limit the processor time that a process can take - say specifying that the process cannot exceed 20% processor time?
Many thanks, Stuart
This is probably not a Linux kernel scheduling issue but rather an X-windows scheduling one. X windows runs cooperative event queues for each application accessing the display. If one application does not relinquish control to the X windows queue it will prevent graphic operations by other x programs. It looks like the bit map drawing process is badly behaved i.e. does not relinquish control to X. Depends what language it is written in as to the solution but if you have access to the code you might consider inserting a Do_Events X call or its equivalent after every so often in the bit map drawing routine.
Ian