Transport: Raise bandwidth refiller thread priority

so I/O doesn't stall under high CPU load
- Raise DH generator thread priority to keep
  DH building out of event pumper thread
- Raise PRNG and YK generator thread priorites one notch
- Set I2PThread priority in constructor
Fixes problems mainly seen on Windows, which seems
to be much more sensitive to priority settings
This commit is contained in:
zzz
2015-07-05 12:08:33 +00:00
parent 98a4460bde
commit 113a8a52f3
5 changed files with 13 additions and 4 deletions

View File

@ -56,7 +56,7 @@ public class AsyncFortunaStandalone extends FortunaStandalone implements Runnabl
_isRunning = true;
_refillThread = new I2PThread(this, "PRNG");
_refillThread.setDaemon(true);
_refillThread.setPriority(Thread.MIN_PRIORITY+1);
_refillThread.setPriority(Thread.NORM_PRIORITY - 2);
_refillThread.start();
}

View File

@ -91,7 +91,7 @@ class YKGenerator {
return;
_precalcThread = new I2PThread(new YKPrecalcRunner(MIN_NUM_BUILDERS, MAX_NUM_BUILDERS),
"YK Precalc", true);
_precalcThread.setPriority(Thread.MIN_PRIORITY);
_precalcThread.setPriority(Thread.NORM_PRIORITY - 2);
_isRunning = true;
_precalcThread.start();
}

View File

@ -17,6 +17,8 @@ import java.util.concurrent.CopyOnWriteArraySet;
* In case its useful later...
* (e.g. w/ native programatic thread dumping, etc)
*
* As of 0.9.21, I2PThreads are initialized to NORM_PRIORITY
* (not the priority of the creating thread).
*/
public class I2PThread extends Thread {
/**
@ -31,36 +33,42 @@ public class I2PThread extends Thread {
public I2PThread() {
super();
setPriority(NORM_PRIORITY);
//if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
// _createdBy = new Exception("Created by");
}
public I2PThread(String name) {
super(name);
setPriority(NORM_PRIORITY);
//if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
// _createdBy = new Exception("Created by");
}
public I2PThread(Runnable r) {
super(r);
setPriority(NORM_PRIORITY);
//if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
// _createdBy = new Exception("Created by");
}
public I2PThread(Runnable r, String name) {
super(r, name);
setPriority(NORM_PRIORITY);
//if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
// _createdBy = new Exception("Created by");
}
public I2PThread(Runnable r, String name, boolean isDaemon) {
super(r, name);
setDaemon(isDaemon);
setPriority(NORM_PRIORITY);
//if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
// _createdBy = new Exception("Created by");
}
public I2PThread(ThreadGroup g, Runnable r) {
super(g, r);
setPriority(NORM_PRIORITY);
//if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
// _createdBy = new Exception("Created by");
}