-
Notifications
You must be signed in to change notification settings - Fork 97
BOYTest
BOY Performance Test Report
All tests were executed on two PCs:
- DELL Precision T3400
- CPU: Intel Core2 Quad CPU Q6700 2.66GHz
- Memory: 4GB
- OS: Windows Vista 32 bit
- Java: JDK 1.6.0_26
- CSS: SNS CSS 3.0.0 (BOY version: 3.0.0)
- DELL Precision workstation T3500
- CPU: Intel Xeon 4 core CPU W3520 2.66GHz
- Memory: 4GB
- OS: Linux 2.6.18 (Red Hat 4.1.2 with KDE)
- Java: JDK 1.6.0_26
- CSS: SNS CSS 3.0.0 (BOY version: 3.0.0) note: The CPU usage on PC2 is not an average CPU usage. Since this PC has 4 cores, 100% of CPU usage only means that one core is fully used.
A soft IOC on PC 2 executed this type of EPICS database:
record(ai, "pv$(X)1")
{
field(DESC, "Analog input")
field(INP, "pv$(X)1:calcExample.VAL NPP NMS")
field(EGUF, "100")
field(EGU, "Counts")
field(HOPR, "100")
field(LOPR, "0")
field(HIHI, "80")
field(HIGH, "60")
field(LOW, "40")
field(LOLO, "20")
field(HHSV, "MAJOR")
field(HSV, "MINOR")
field(LSV, "MINOR")
field(LLSV, "MAJOR")
}
record(calc, "pv$(X)1:calcExample")
{
field(DESC, "Counter")
field(SCAN,"$(Scan)")
field(FLNK, "pv$(X)1")
field(CALC, "(A<B)?(A+C):D")
field(INPA, "pv$(X)1:calcExample.VAL NPP NMS")
field(INPB, "99")
field(INPC, "1")
field(INPD, "0")
field(EGU, "Counts")
field(HOPR, "100")
field(HIHI, "80")
field(HIGH, "60")
field(LOW, "40")
field(LOLO, "20")
field(HHSV, "MAJOR")
field(HSV, "MINOR")
field(LSV, "MINOR")
field(LLSV, "MAJOR")
field(VAL, "0")
}
The SCAN rate is 0.1 second.
OPI: 100 Text Update with different PVs updated at 10 hz with alarm
- Start up: no delay
- Actual GUI update: 10Hz
- Operation Responsiveness: no delay
- CPU: 4%
- Memory: 129M
- Start up: no delay
- Actual GUI update: 10Hz
- Operation Responsiveness: no delay
- CPU: java: 12%, xorg: 2%
- Memory: 50M
OPI: 400 Text Update with different PVs updated at 10 hz with alarm
- Start up: no delay
- Actual GUI update: 10Hz
- CPU: 14%
- Memory: 120M
- Start up: no delay
- Actual GUI update: 10Hz
- Operation Responsiveness: no delay
- CPU: java: 60%, xorg: 8%
- Memory: 70M
OPI: 1000 Text Update with different PVs updated at 10 hz with alarm
- Start up: no delay
- Actual GUI update: 10Hz
- CPU: 28%
- Memory: 132M
- Start up: no delay
- Actual GUI update: 10Hz
- Operation Responsiveness: no delay
- CPU: java: 99%, xorg: 14%
- Memory: 85M
Test Case 4: 100 text updates, 100 Spinners, 100 Scrollbars, 100 LEDs, 100 text inputs and 100 graphics widgets @10Hz
OPI: 100 text updates, 100 Spinners, 100 Scrollbars, 100 LEDs, 100 text inputs with different PVs overlapped on 100 graphics widgets updated at 10 hz with alarm
- Start up: 1 second
- Actual GUI update: 7Hz
- Operation Responsiveness: no delay
- CPU: 28%
- Memory: 158M
- Start up: no delay
- Actual GUI update: 10Hz
- Operation Responsiveness: no delay
- CPU: java: 78%, xorg: 62%
- Memory: 120M
OPI: Based on test case 4, add 10 XY Graphs. Each graph has 10 traces.
- Start up: 2 second
- Actual GUI update: 3Hz
- Operation Responsiveness: 0.5s delay
- CPU: 28%
- Memory: 166M
- Start up: 1 second
- Actual GUI update: 5Hz
- Operation Responsiveness: no delay
- CPU: java: 60%, xorg: 70%
- Memory: 120M
OPI: 10 OPIs with widgets as in test case 1; Two CSS windows in separate monitors; 5 tabs on each window; Tabs are arranged to not overlapped.
- Start up: no delay
- Actual GUI update: 10Hz
- Operation Responsiveness: no delay
- CPU: 22%
- Memory: 168M
- Start up: no delay
- Actual GUI update: 10Hz
- Operation Responsiveness: no delay
- CPU: java: 90%, xorg: 17%
- Memory: 120M
OPI: 30 OPIs with widgets as in test case 1; Two CSS windows in separate monitors; 15 tabs on each window; Tabs are overlapped.
- Start up: no delay
- Actual GUI update: 10Hz
- Operation Responsiveness: no delay
- CPU: 18%
- Memory: 214M
- Start up: no delay
- Actual GUI update: 10Hz
- Operation Responsiveness: no delay
- CPU: java: 80%, xorg: 6%
- Memory: 213M
OPI: 2OPIs with widgets as in test case 5; Two CSS windows in separate monitors;
- Start up: 3 seconds
- Actual GUI update: 2Hz
- Operation Responsiveness: 1 second delay
- CPU: 28%
- Memory: 213M
- Start up: no delay
- Actual GUI update: 2Hz
- Operation Responsiveness: 1 second delay
- CPU: java: 60%, xorg: 66%
- Memory: 200M
OPI: 200 labels with same blinking rules (See the blinking rule example in BOY Examples->5_3_Rules_Script.opi). Fast: 10Hz. Slow: 2Hz
- Start up: 1 seconds
- Actual GUI update: 3hz(fast);2hz(slow)
- Operation Responsiveness: no delay
- CPU: 7%(blinking at fast); 4%(blinking at slow)
- Memory: 190M
- Start up: 1 seconds
- Actual GUI update: 3hz(fast);2hz(slow)
- Operation Responsiveness: no delay
- CPU: java: 15%, xorg: 3%(blinking at fast); java:8%, xorg: 1%(blinking at slow)
- Memory: 92M
OPI: 50 Ellipses with same scripts to animate them (See the script example in BOY Examples->5_3_Rules_Script.opi). .
- Start up: 0.5 seconds
- Actual GUI update: no delay
- Operation Responsiveness: no delay
- CPU: 3%
- Memory: 143M
- Start up: no delay
- Actual GUI update: no delay
- Operation Responsiveness: no delay
- CPU: java: 5%, xorg: 4%
- Memory: 131M
OPI: Two CSS windows; Each has 5 OPIs; Each OPI has 4 XY Graphs and a Intensity Graph with a waveform PV which contains 80000 points of data updated at 1Hz.
- Start up: 0.5 seconds
- Actual GUI update: no delay
- Operation Responsiveness: no delay
- CPU: 10%
- Memory: 184M
- Start up: no delay
- Actual GUI update: no delay
- Operation Responsiveness: no delay
- CPU: java: 30%, xorg: 6%
- Memory: 152M
In real world, we have an OPI runs 24X7 in SNS central control room as the big overview screen. It has been running for more than a year and no crash was reported. In this OPI, the size of the Beam Image at Foil (on left) waveform is 76800. There are two waveforms on center XY Graph. Both of waveforms have 105000 points. The size of the Beam Image at Target (on right) waveform is 80000. So it is 366800 points in total. All of these waveforms updates at a rate around 1Hz.
On a modern PC, BOY is able to satisfy most cases of usage in real world. OPI is responsive even with large amount of widgets updated at fast rate. At SNS, some OPIs has been continually running for several months, in which cases no memory leak and crash was reported.