Skip to content
xihui edited this page Jul 20, 2011 · 25 revisions

= BOY Performance Test Report = PageOutline(2-3)

== Test Infrastructure == All tests were executed on two PCs:

=== PC 1 ===

  • 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)

=== PC 2 ===

  • 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.

== Test Setup == 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.

== Performance Test ==

=== Test Case 1: 100 text updates @10Hz === OPI: 100 Text Update with different PVs updated at 10 hz with alarm ==== Test Results on PC 1 ====

  • Start up: no delay
  • Actual GUI update: 10Hz
  • Operation Responsiveness: no delay
  • CPU: 4%
  • Memory: 129M ==== Test Results on PC 2 ====
  • Start up: no delay
  • Actual GUI update: 10Hz
  • Operation Responsiveness: no delay
  • CPU: java: 12%, xorg: 2%
  • Memory: 50M

=== Test Case 2: 400 text updates @10Hz === OPI: 400 Text Update with different PVs updated at 10 hz with alarm ==== Test Results on PC 1 ====

  • Start up: no delay
  • Actual GUI update: 10Hz
  • CPU: 14%
  • Memory: 120M ==== Test Results on PC 2 ====
  • Start up: no delay
  • Actual GUI update: 10Hz
  • Operation Responsiveness: no delay
  • CPU: java: 60%, xorg: 8%
  • Memory: 70M

=== Test Case 3: 1000 text updates @10Hz === OPI: 1000 Text Update with different PVs updated at 10 hz with alarm ==== Test Results on PC 1 ====

  • Start up: no delay
  • Actual GUI update: 10Hz
  • CPU: 28%
  • Memory: 132M ==== Test Results on PC 2 ====
  • Start up: no delay
  • Actual GUI update: 10Hz
  • Operation Responsiveness: no delay
  • CPU: java: 99%, xorg: 14%
  • Memory: 85M

{{{ #!html BOY Test Screenshot

}}}

=== 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 ==== Test Results on PC 1 ====

  • Start up: 1 second
  • Actual GUI update: 7Hz
  • Operation Responsiveness: no delay
  • CPU: 28%
  • Memory: 158M ==== Test Results on PC 2 ====
  • Start up: no delay
  • Actual GUI update: 10Hz
  • Operation Responsiveness: no delay
  • CPU: java: 78%, xorg: 62%
  • Memory: 120M

=== Test Case 5: Add 10 XY Graphs to Test case 4 === OPI: Based on test case 4, add 10 XY Graphs. Each graph has 10 traces. ==== Test Results on PC 1 ====

  • Start up: 2 second
  • Actual GUI update: 3Hz
  • Operation Responsiveness: 0.5s delay
  • CPU: 28%
  • Memory: 166M ==== Test Results on PC 2 ====
  • Start up: 1 second
  • Actual GUI update: 5Hz
  • Operation Responsiveness: no delay
  • CPU: java: 60%, xorg: 70%
  • Memory: 120M

{{{ #!html BOY Test Screenshot

}}}

=== Test Case 6: 10 OPIs, each has 100 text updates @10Hz === 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. ==== Test Results on PC 1 ====

  • Start up: no delay
  • Actual GUI update: 10Hz
  • Operation Responsiveness: no delay
  • CPU: 22%
  • Memory: 168M ==== Test Results on PC 2 ====
  • Start up: no delay
  • Actual GUI update: 10Hz
  • Operation Responsiveness: no delay
  • CPU: java: 90%, xorg: 17%
  • Memory: 120M

{{{ #!html BOY Test Screenshot

}}}

=== Test Case 7: 30 OPIs, each has 100 text updates @10Hz === OPI: 30 OPIs with widgets as in test case 1; Two CSS windows in separate monitors; 15 tabs on each window; Tabs are overlapped. ==== Test Results on PC 1 ====

  • Start up: no delay
  • Actual GUI update: 10Hz
  • Operation Responsiveness: no delay
  • CPU: 18%
  • Memory: 214M ==== Test Results on PC 2 ====
  • Start up: no delay
  • Actual GUI update: 10Hz
  • Operation Responsiveness: no delay
  • CPU: java: 80%, xorg: 6%
  • Memory: 213M

=== Test Case 8: 2 OPIs based on test case 5 === OPI: 2OPIs with widgets as in test case 5; Two CSS windows in separate monitors; ==== Test Results on PC 1 ====

  • Start up: 3 seconds
  • Actual GUI update: 2Hz
  • Operation Responsiveness: 1 second delay
  • CPU: 28%
  • Memory: 213M ==== Test Results on PC 2 ====
  • Start up: no delay
  • Actual GUI update: 2Hz
  • Operation Responsiveness: 1 second delay
  • CPU: java: 60%, xorg: 66%
  • Memory: 200M

=== Test Case 9: 200 labels with Rules === OPI: 200 labels with same blinking rules (See the blinking rule example in BOY Examples->5_3_Rules_Script.opi). Fast: 10Hz. Slow: 2Hz ==== Test Results on PC 1 ====

  • 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 ==== Test Results on PC 2 ====
  • 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

=== Test Case 10: 50 Ellipses with Scripts === OPI: 50 Ellipses with same scripts to animate them (See the script example in BOY Examples->5_3_Rules_Script.opi). . ==== Test Results on PC 1 ====

  • Start up: 0.5 seconds
  • Actual GUI update: no delay
  • Operation Responsiveness: no delay
  • CPU: 3%
  • Memory: 143M ==== Test Results on PC 2 ====
  • Start up: no delay
  • Actual GUI update: no delay
  • Operation Responsiveness: no delay
  • CPU: java: 5%, xorg: 4%
  • Memory: 131M

=== Test Case 11: 10 OPIs with Intensity Graph === 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. ==== Test Results on PC 1 ====

  • Start up: 0.5 seconds
  • Actual GUI update: no delay
  • Operation Responsiveness: no delay
  • CPU: 10%
  • Memory: 184M ==== Test Results on PC 2 ====
  • Start up: no delay
  • Actual GUI update: no delay
  • Operation Responsiveness: no delay
  • CPU: java: 30%, xorg: 6%
  • Memory: 152M

== Summary == 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.

Clone this wiki locally