Changes between Initial Version and Version 1 of benchmarks

Show
Ignore:
Timestamp:
11/24/11 10:56:26 (12 years ago)
Author:
bartek
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • benchmarks

    v1 v1  
     1= QCG-Computing Benchmarks = 
     2The QCG-Computing service tests concerned the job submission and job management tasks, which are typical for this kind of a service. In the tests QCG-Computing was compared to gLite and UNICORE. The proposed two types of the tests used the following metrics: 
     3* response time, 
     4* throughput  
     5 
     6All the tests were performed using specially written program on the basis of the SAGA C++ library. There were utilized two adaptors offered by SAGA C++, namely: 
     7* gLite CREAM (based on glite-ce-cream-client-api-c) - gLite (CREAM-CE service), 
     8* OGSA BES (based on gSOAP) - UNICORE and !QosCosGrid (QCG-Computing service). 
     9 
     10The use of the common access layer allowed to minimize the risk of obtaining incorrect results. In the same purpose, the jobs were submitted to the same resource and didn't require any data transfer.  
     11 
     12 
     13== Testbed == 
     14* Client machine: 
     15 * 8 cores (Intel(R) Xeon(R) CPU E5345), 
     16 * 11 GB RAM, 
     17 * Scientific Linux 5.3, 
     18 * RTT from the client's machine to the cluster's frontend: about 12 ms. 
     19* Cluster Zeus (84. place on TOP500): 
     20 * queueing system: Torque 2.4.12 + Maui 3.3, 
     21 * about 800 nodes, 
     22 * about 3-4k tasks present in the system, 
     23 * Maui „RMPOLLINTERVAL”: 3,5 minutes, 
     24 * for the puropose of the tests, a special partition (WP4) was set aside: 64 cores / 8 nodes - 64 slots, 
     25 * test users (plgtestm01-10 and 10 users from the plgridXXX pool) were assigned on an exclusive basis to the WP4 partition. 
     26* Service nodes (qcg.grid.cyf-kr.edu.pl, cream.grid.cyf-kr.edu.pl, uni-ce.grid.cyf-kr.edu.pl): 
     27 * virtual machines (Scientific Linux 5.5), 
     28 * QCG and UNICORE: 1 virtual core, 2GB RAM, 
     29 * gLite CREAM: 3 virtual cores, 8 GB RAM. 
     30 
     31== Test 1 - Response Time == 
     32The main program creates N processes (each process can use a different certificate) that invoke the function `sustain_thread`. Next, it waits for the end of all running processes. 
     33 
     34In general, the idea of the program is to keep in a system `jobs_per_thread` jobs for `test_duration` seconds, inquering all the time (the delays between calls drawn from a defined interval) about all currently running or queued jobs. 
     35 
     36The following snippet shows a pseudocode of the function `sustain_thread`: 
     37{{{ 
     38#!div style="font-size: 90%" 
     39{{{#!sh 
     401. start_timer() 
     412. for i = 1 .. jobs_per_thread 
     42  2a: submit_job(job[i]) 
     433. while (current_time < test_duration) do 
     44  3a: for i = 1 .. jobs_per_thread 
     45  3a1: if (! is_finished(job[i].last_state)) 
     46    3a11: sleep((rand() / RAND_MAX) / SLEEP_COEF) 
     47    3a11: query_state(job[i]) 
     48  3a2: if (is_finished(job[i].last_state)) 
     49    3a21: submit_job(job[i]) 
     504. stop_timer() 
     51}}} 
     52}}} 
     53The function `submit_job(job)`: 
     54{{{ 
     55#!div style="font-size: 90%" 
     56{{{#!sh 
     571. start_timer() 
     582. job.job = service.create_job() 
     593. job.job.run() 
     604. stop_timer() 
     615. query_state(job) 
     62}}} 
     63}}} 
     64The function `query_state(job)`: 
     65{{{ 
     66#!div style="font-size: 90%" 
     67{{{#!sh 
     681. start_timer() 
     692. job.last_state = job.job.get_state() 
     703. stop_timer() 
     71}}} 
     72}}} 
     73 
     74At the end of tests, the average, minimal and maximal times of submitting a job (`submit_job`) and inquiring about a job state (`query_state`) are printed. Additionally, the program displays the number of all submitted jobs, the number of successfully finished jobs (`Done`) and the number of the jobs finished with the other status (`Canceled`, `Failed`, `Suspended`). In the last case, the number of fails, i.e. exceptions returned by the SAGA adaptors, is shown.  
     75 
     76==== Notes ==== 
     77 
     78''Pros:'' 
     79* The test reflects the natural situation in productive environments: 
     80 * approximately constant number of tasks, 
     81 * "the task flow" (when one task is finished, another begins). 
     82* The program may be used to measure the overall capacity of the system. 
     83 
     84''Cons:'' 
     85* The measured submitting time may be distorted (the response of the service on the submit request does not necessarily imply the submit to the queueing system). 
     86 
     87==== Plan of the tests ==== 
     88* 50 tasks x 10 users = 500 tasks, 30 minutes, SLEEP_COEF = 10 
     89* 100 tasks x 10 users = 1000 tasks, 30 minutes, SLEEP_COEF = 10 
     90* 200 tasks x 10 users = 2000 tasks, 30 minutes, SLEEP_COEF = 10 
     91* 400 tasks x 10 users = 4000 tasks, 30 minutes, SLEEP_COEF = 10 
     92 
     93==== Results ==== 
     94* Average submit time of a single job 
     95  
     96 || ||= QCG 2.0 =||= UNICORE 6.3.2 =||= gLite 3.2 =|| 
     97 ||= 50x10 =||1.43||2.41||8.47|| 
     98 ||= 100x10 =||1.49||1.24^[#n 1]^||8.45|| 
     99 ||= 200x10 =||1.99||2.20||8.50|| 
     100 ||= 400x10 =||1.96||-^[#n 2]^||8.24|| 
     101 
     102 
     103* Average time of a query about a job status. 
     104  
     105 || ||= QCG 2.0 =||= UNICORE 6.3.2 =||= gLite 3.2 =|| 
     106 ||= 50x10 =||0.38||2.73||0.20|| 
     107 ||= 100x10 =||0.35||1.61^[#n 1]^||0.36|| 
     108 ||= 200x10 =||0.63||3.73||0.24|| 
     109 ||= 400x10 =||0.47||-^[#n 2]^||0.21|| 
     110 
     111* The system load while performing the test "200x10" (on a basis of Ganglia) 
     112[[Image(ganglia-200x10-all.png, center, width=880px)]] 
     113 
     114== Test 2 - Throughput == 
     115The test is grounded on the methodology described in the paper [[http://dl.acm.org/citation.cfm?id=1533455|Benchmarking of Integrated OGSA-BES with the Grid Middleware]] and bases on measurement performed from the user perspective of the finish time of the last from N jobs submitted at (almost) the same moment. In addition to the paper, the presented test has utilized also the following elements:  
     116* submitting the tasks by N processes/users, 
     117* using consistent SDK, not the command-line clients, 
     118* single test environment. 
     119 
     120==== Notes ==== 
     121 
     122''Pros:'' 
     123* Possibility to compare results of the tests with the results presented in the mentioned publication.  
     124* Measures the performance of the system from a user point of view (from the first job submit to the finish of the last job). 
     125 
     126''Cons:'' 
     127* The test is valid only if jobs are submitted to a separated resource. 
     128* The tasks of a scheduler of a system (Maui) may have significant impact on results (the scheduler performs complex operations from time to time). 
     129 
     130==== Results ==== 
     131* 1 user, 1 thread, 500 tasks: 
     132[[Image(zeus-throughput-500x1-1.png, center, width=640px)]] 
     133* 1 user, 10 thread, 500 tasks (50x10): 
     134[[Image(zeus-throughput-50x1-1.png, center, width=640px)]] 
     135* 10 users, 10 thread, 500 tasks (50x10): 
     136[[Image(zeus-throughput-50x10-0.png, center, width=640px)]] 
     137* 10 users, 10 thread, 1000 tasks (10x100): 
     138[[Image(zeus-throughput-100-10-0.png, center, width=640px)]] 
     139 
     140=== Notes === 
     1411. The machine where CREAM (gLite) was running had more resources (in particular CPU cores and virtual memory) than the machines with QCG and UNICORE. 
     1422. ... hovewer this machine was additionally loaded by external tasks (about 500-2000 tasks - the tests were performed by 2 weeks). 
     1433. QCG returns the job status when the job is already in queueing system, gLite and UNICORE not necessarily. Thus, e.g. in the throughput tests, new tasks appeared after the test finished. 
     1444. The bottle-neck (especially in the second group of tests) was the throughput of the WP4 partition and Maui, which imposed that only 64 tasks could be scheduled per one scheduling cycle (at least 3.5 minutes).