From a6283671f31498773d0842b43884048c8d2d61fd Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 22 Nov 2016 12:51:12 +0100 Subject: smptests/smplock01: Test TAS and TTAS locks Cache align locks in the context. --- testsuites/smptests/smplock01/init.c | 102 +- testsuites/smptests/smplock01/smplock01.py | 32 - testsuites/smptests/smplock01/smplock01.scn | 3898 ++++++++++++++---------- testsuites/smptests/smplock01/smplock01fair.py | 58 + testsuites/smptests/smplock01/smplock01perf.py | 38 + 5 files changed, 2538 insertions(+), 1590 deletions(-) delete mode 100644 testsuites/smptests/smplock01/smplock01.py create mode 100755 testsuites/smptests/smplock01/smplock01fair.py create mode 100755 testsuites/smptests/smplock01/smplock01perf.py diff --git a/testsuites/smptests/smplock01/init.c b/testsuites/smptests/smplock01/init.c index 046fce6493..e57b441947 100644 --- a/testsuites/smptests/smplock01/init.c +++ b/testsuites/smptests/smplock01/init.c @@ -31,27 +31,29 @@ const char rtems_test_name[] = "SMPLOCK 1"; #define CPU_COUNT 32 -#define TEST_COUNT 11 +#define TEST_COUNT 13 typedef struct { rtems_test_parallel_context base; unsigned long counter[TEST_COUNT]; unsigned long local_counter[CPU_COUNT][TEST_COUNT][CPU_COUNT]; - SMP_lock_Control lock; + SMP_lock_Control lock RTEMS_ALIGNED(CPU_CACHE_LINE_BYTES); + Atomic_Uint flag RTEMS_ALIGNED(CPU_CACHE_LINE_BYTES); + SMP_MCS_lock_Control mcs_lock RTEMS_ALIGNED(CPU_CACHE_LINE_BYTES); #if defined(RTEMS_PROFILING) SMP_lock_Stats mcs_stats; #endif - SMP_MCS_lock_Control mcs_lock; - SMP_sequence_lock_Control seq_lock; + SMP_sequence_lock_Control seq_lock RTEMS_ALIGNED(CPU_CACHE_LINE_BYTES); int a RTEMS_ALIGNED(CPU_CACHE_LINE_BYTES); int b RTEMS_ALIGNED(CPU_CACHE_LINE_BYTES); -} test_context RTEMS_ALIGNED(CPU_CACHE_LINE_BYTES); +} test_context; static test_context test_instance = { .lock = SMP_LOCK_INITIALIZER("global ticket"), #if defined(RTEMS_PROFILING) .mcs_stats = SMP_LOCK_STATS_INITIALIZER("global MCS"), #endif + .flag = ATOMIC_INITIALIZER_UINT(0), .mcs_lock = SMP_MCS_LOCK_INITIALIZER, .seq_lock = SMP_SEQUENCE_LOCK_INITIALIZER }; @@ -587,6 +589,86 @@ static void test_10_fini( ); } +static void test_11_body( + rtems_test_parallel_context *base, + void *arg, + size_t active_workers, + size_t worker_index +) +{ + test_context *ctx = (test_context *) base; + size_t test = 11; + unsigned long counter = 0; + + while (!rtems_test_parallel_stop_job(&ctx->base)) { + while (_Atomic_Exchange_uint(&ctx->flag, 1, ATOMIC_ORDER_ACQUIRE) != 0) { + /* Wait */ + } + + _Atomic_Store_uint(&ctx->flag, 0, ATOMIC_ORDER_RELEASE); + ++counter; + } + + ctx->local_counter[active_workers - 1][test][worker_index] = counter; +} + +static void test_11_fini( + rtems_test_parallel_context *base, + void *arg, + size_t active_workers +) +{ + test_context *ctx = (test_context *) base; + + test_fini( + ctx, + "GlobalTASLockWithLocalCounter", + 11, + active_workers + ); +} + +static void test_12_body( + rtems_test_parallel_context *base, + void *arg, + size_t active_workers, + size_t worker_index +) +{ + test_context *ctx = (test_context *) base; + size_t test = 12; + unsigned long counter = 0; + + while (!rtems_test_parallel_stop_job(&ctx->base)) { + while (_Atomic_Exchange_uint(&ctx->flag, 1, ATOMIC_ORDER_ACQUIRE) != 0) { + while (_Atomic_Load_uint(&ctx->flag, ATOMIC_ORDER_RELAXED) != 0) { + /* Wait */ + } + } + + _Atomic_Store_uint(&ctx->flag, 0, ATOMIC_ORDER_RELEASE); + ++counter; + } + + ctx->local_counter[active_workers - 1][test][worker_index] = counter; +} + +static void test_12_fini( + rtems_test_parallel_context *base, + void *arg, + size_t active_workers +) +{ + test_context *ctx = (test_context *) base; + + test_fini( + ctx, + "GlobalTTASLockWithLocalCounter", + 12, + active_workers + ); +} + static const rtems_test_parallel_job test_jobs[TEST_COUNT] = { { .init = test_init, @@ -643,6 +725,16 @@ static const rtems_test_parallel_job test_jobs[TEST_COUNT] = { .body = test_10_body, .fini = test_10_fini, .cascade = false + }, { + .init = test_init, + .body = test_11_body, + .fini = test_11_fini, + .cascade = true + }, { + .init = test_init, + .body = test_12_body, + .fini = test_12_fini, + .cascade = true } }; diff --git a/testsuites/smptests/smplock01/smplock01.py b/testsuites/smptests/smplock01/smplock01.py deleted file mode 100644 index 4a4f794620..0000000000 --- a/testsuites/smptests/smplock01/smplock01.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python - -# -# Copyright (c) 2016 embedded brains GmbH. All rights reserved. -# -# The license and distribution terms for this file may be -# found in the file LICENSE in this distribution or at -# http://www.rtems.org/license/LICENSE. -# - -import re -import libxml2 -from libxml2 import xmlNode -import matplotlib.pyplot as plt -data = open('smplock01.scn').read() -data = re.sub(r'\*\*\*.*\*\*\*', '', data) -doc = libxml2.parseDoc(data) -ctx = doc.xpathNewContext() - -plt.title('SMP Lock Performance') -plt.xlabel('Active Workers') -plt.ylabel('Operation Count') - -y = map(xmlNode.getContent, ctx.xpathEval('/SMPLock01/GlobalTicketLockWithLocalCounter/SumOfLocalCounter')) -x = range(1, len(y) + 1) -plt.plot(x, y, label = 'Global Ticket Lock', marker = 'o') - -y = map(xmlNode.getContent, ctx.xpathEval('/SMPLock01/GlobalMCSLockWithLocalCounter/SumOfLocalCounter')) -plt.plot(x, y, label = 'Global MCS Lock', marker = 'o') - -plt.legend(loc = 'best') -plt.show() diff --git a/testsuites/smptests/smplock01/smplock01.scn b/testsuites/smptests/smplock01/smplock01.scn index 33062e72c6..3d4b90f507 100644 --- a/testsuites/smptests/smplock01/smplock01.scn +++ b/testsuites/smptests/smplock01/smplock01.scn @@ -1,1784 +1,2576 @@ *** BEGIN OF TEST SMPLOCK 1 *** - 18488947 + 18357037 0 - 18488947 + 18357037 - 10408771 - 10408970 + 10121166 + 10121320 0 - 20817741 + 20242486 - 5792952 - 5793000 - 5793002 + 5707325 + 5707356 + 5707357 0 - 17378954 + 17122038 - 4199979 - 4199989 - 4199995 - 4199989 + 4194779 + 4194794 + 4194790 + 4194794 0 - 16799952 + 16779157 - 3341769 - 3341779 - 3341783 - 3341776 - 3341784 + 3328106 + 3328112 + 3328107 + 3328109 + 3328114 0 - 16708891 + 16640548 - 2766306 - 2766318 - 2766317 - 2766314 - 2766317 - 2766315 - 0 - 16597887 + 2719456 + 2719464 + 2719465 + 2719465 + 2719465 + 2719464 + 0 + 16316779 - 2369782 - 2369785 - 2369785 - 2369784 - 2369787 - 2369784 - 2369786 - 0 - 16588493 + 2281694 + 2281698 + 2281695 + 2281700 + 2281700 + 2281697 + 2281699 + 0 + 15971883 - 2088876 - 2088876 - 2088878 - 2088877 - 2088879 - 2088876 - 2088879 - 2088880 - 0 - 16711021 + 1973749 + 1973751 + 1973749 + 1973754 + 1973753 + 1973751 + 1973749 + 1973749 + 0 + 15790005 - 535373 - 535382 - 535375 - 535370 - 535381 - 535373 - 535378 - 535378 - 535481 - 0 - 4818491 + 531562 + 531561 + 531558 + 531556 + 531562 + 531566 + 531561 + 531560 + 531589 + 0 + 4784075 - 479836 - 479858 - 479853 - 479874 - 479864 - 479821 - 479859 - 479851 - 480851 - 480850 - 0 - 4800517 + 467120 + 467127 + 467117 + 467120 + 467123 + 467116 + 467122 + 467116 + 467180 + 467179 + 0 + 4671320 - 433033 - 433024 - 433052 - 433049 - 433048 - 433065 - 433039 - 433068 - 433715 - 433715 - 433753 - 0 - 4765561 + 426740 + 426739 + 426742 + 426737 + 426740 + 426741 + 426747 + 426735 + 426768 + 426765 + 426767 + 0 + 4694221 - 393376 - 393356 - 393353 - 393361 - 393368 - 393378 - 393360 - 393341 - 393736 - 393734 - 393743 - 393740 - 0 - 4721846 + 388705 + 388703 + 388710 + 388706 + 388701 + 388702 + 388702 + 388705 + 388740 + 388739 + 388740 + 388739 + 0 + 4664592 - 358275 - 358264 - 358271 - 358246 - 358262 - 358250 - 358267 - 358266 - 358538 - 358534 - 358532 - 358533 - 358608 - 0 - 4658846 + 356920 + 356917 + 356916 + 356917 + 356920 + 356919 + 356920 + 356917 + 356948 + 356947 + 356948 + 356947 + 356953 + 0 + 4640089 - 330667 - 330677 - 330652 - 330656 - 330682 - 330655 - 330679 - 330662 - 330843 - 330837 - 330842 - 330840 - 330841 - 330835 - 0 - 4630368 + 330192 + 330192 + 330186 + 330185 + 330190 + 330183 + 330187 + 330187 + 330226 + 330225 + 330225 + 330228 + 330225 + 330226 + 0 + 4622857 - 304222 - 304232 - 304211 - 304202 - 304212 - 304232 - 304228 - 304206 - 304350 - 304350 - 304349 - 304361 - 304367 - 304350 - 304522 - 0 - 4564394 + 303180 + 303186 + 303190 + 303180 + 303188 + 303181 + 303183 + 303191 + 303199 + 303204 + 303209 + 303207 + 303212 + 303215 + 303217 + 0 + 4547942 - 274413 - 274412 - 274414 - 274402 - 274409 - 274410 - 274404 - 274401 - 274407 - 274410 - 274415 - 274412 - 274404 - 274426 - 274414 - 274412 - 0 - 4390565 + 274980 + 274975 + 274979 + 274983 + 274979 + 274977 + 274974 + 274980 + 274977 + 274984 + 274983 + 274981 + 274982 + 274978 + 274980 + 274977 + 0 + 4399669 - 259630 - 259619 - 259621 - 259624 - 259622 - 259621 - 259631 - 259632 - 259629 - 259621 - 259619 - 259623 - 259632 - 259628 - 259627 - 259623 - 259673 - 0 - 4413675 + 261695 + 261697 + 261696 + 261696 + 261694 + 261695 + 261697 + 261692 + 261696 + 261692 + 261696 + 261697 + 261697 + 261695 + 261692 + 261691 + 261708 + 0 + 4448826 - 237091 - 237091 - 237091 - 237089 - 237090 - 237090 - 237088 - 237092 - 237092 - 237095 - 237093 - 237091 - 237090 - 237090 - 237091 - 237092 - 237111 - 237110 - 0 - 4267677 + 240007 + 240008 + 240007 + 240008 + 240010 + 240007 + 240006 + 240008 + 240008 + 240007 + 240010 + 240007 + 240010 + 240007 + 240007 + 240010 + 240020 + 240017 + 0 + 4320164 - 224860 - 224860 - 224859 - 224858 - 224859 - 224862 - 224861 - 224861 - 224862 - 224860 - 224860 - 224859 - 224865 - 224862 - 224859 - 224859 - 224884 - 224880 - 224881 - 0 - 4272411 + 225896 + 225897 + 225897 + 225898 + 225899 + 225898 + 225898 + 225896 + 225896 + 225896 + 225897 + 225898 + 225900 + 225899 + 225895 + 225894 + 225906 + 225905 + 225907 + 0 + 4292072 - 212719 - 212721 - 212721 - 212720 - 212724 - 212725 - 212726 - 212725 - 212723 - 212724 - 212721 - 212720 - 212724 - 212722 - 212726 - 212726 - 212743 - 212744 - 212744 - 212745 - 0 - 4254543 + 214338 + 214338 + 214338 + 214336 + 214338 + 214337 + 214335 + 214337 + 214338 + 214337 + 214337 + 214338 + 214337 + 214337 + 214339 + 214338 + 214343 + 214343 + 214345 + 214345 + 0 + 4286774 - 198923 - 198922 - 198921 - 198921 - 198921 - 198923 - 198921 - 198924 - 198922 - 198920 - 198922 - 198922 - 198924 - 198922 - 198921 - 198922 - 198930 - 198930 - 198929 - 198929 - 198933 - 0 - 4177402 + 198227 + 198229 + 198227 + 198228 + 198228 + 198229 + 198229 + 198228 + 198227 + 198230 + 198227 + 198228 + 198229 + 198230 + 198228 + 198230 + 198231 + 198232 + 198233 + 198233 + 198232 + 0 + 4162815 - 189448 - 189450 - 189449 - 189448 - 189449 - 189450 - 189447 - 189446 - 189447 - 189447 - 189448 - 189449 - 189449 - 189450 - 189447 - 189449 - 189454 - 189452 - 189453 - 189453 - 189455 - 189453 - 0 - 4167893 + 192321 + 192322 + 192322 + 192323 + 192325 + 192324 + 192323 + 192324 + 192325 + 192325 + 192323 + 192323 + 192323 + 192323 + 192324 + 192324 + 192329 + 192326 + 192325 + 192329 + 192326 + 192327 + 0 + 4231136 - 177492 - 177490 - 177489 - 177490 - 177491 - 177491 - 177491 - 177491 - 177492 - 177490 - 177492 - 177489 - 177491 - 177489 - 177491 - 177491 - 177494 - 177493 - 177493 - 177495 - 177493 - 177492 - 177498 - 0 - 4082308 + 177893 + 177892 + 177895 + 177894 + 177892 + 177891 + 177893 + 177893 + 177893 + 177893 + 177894 + 177894 + 177893 + 177893 + 177894 + 177894 + 177895 + 177895 + 177896 + 177897 + 177894 + 177896 + 177894 + 0 + 4091558 - 164885 - 164884 - 164884 - 164885 - 164884 - 164886 - 164887 - 164888 - 164885 - 164885 - 164884 - 164884 - 164884 - 164885 - 164886 - 164884 - 164883 - 164884 - 164885 - 164885 - 164884 - 164884 - 164884 - 164884 - 0 - 3957233 + 168726 + 168726 + 168726 + 168726 + 168726 + 168725 + 168726 + 168726 + 168726 + 168726 + 168728 + 168727 + 168727 + 168726 + 168726 + 168728 + 168727 + 168729 + 168726 + 168725 + 168728 + 168727 + 168726 + 168726 + 0 + 4049435 - 13052163 + 13090449 0 - 13052163 + 13090449 - 6249883 - 6250063 + 6384726 + 6384887 0 - 12499946 + 12769613 - 2971593 - 2971609 - 2971610 + 2955420 + 2955434 + 2955434 0 - 8914812 + 8866288 - 2917683 - 2917704 - 2917704 - 2917698 + 2866696 + 2866710 + 2866711 + 2866708 0 - 11670789 + 11466825 - 3024302 - 3024315 - 3024315 - 3024313 - 3024315 + 2996690 + 2996699 + 2996701 + 2996698 + 2996701 0 - 15121560 + 14983489 - 2592858 - 2592873 - 2592872 - 2592868 - 2592869 - 2592872 - 0 - 15557212 + 2540852 + 2540864 + 2540864 + 2540862 + 2540861 + 2540863 + 0 + 15245166 - 2210518 - 2210526 - 2210526 - 2210524 - 2210526 - 2210527 - 2210526 - 0 - 15473673 + 2182035 + 2182054 + 2182053 + 2182053 + 2182053 + 2182055 + 2182055 + 0 + 15274358 - 1911334 - 1911340 - 1911340 - 1911339 - 1911340 - 1911341 - 1911341 - 1911338 - 0 - 15290713 + 1920366 + 1920373 + 1920374 + 1920373 + 1920371 + 1920374 + 1920373 + 1920372 + 0 + 15362976 - 1222955 - 1222958 - 1222958 - 1222956 - 1222959 - 1222958 - 1222959 - 1222957 - 1222957 - 0 - 11006617 + 1216597 + 1216602 + 1216602 + 1216602 + 1216601 + 1216602 + 1216603 + 1216601 + 1216600 + 0 + 10949410 - 1033322 - 1033324 - 1033322 - 1033322 - 1033323 - 1033323 - 1033324 - 1033323 - 1033323 - 1033322 - 0 - 10333228 + 1007168 + 1007170 + 1007171 + 1007170 + 1007170 + 1007170 + 1007171 + 1007170 + 1007170 + 1007171 + 0 + 10071701 - 782867 - 782869 - 782869 - 782868 - 782867 - 782869 - 782869 - 782868 - 782868 - 782866 - 782868 - 0 - 8611548 + 772281 + 772283 + 772283 + 772284 + 772281 + 772283 + 772283 + 772282 + 772281 + 772282 + 772282 + 0 + 8495105 - 667681 - 667683 - 667684 - 667682 - 667684 - 667683 - 667682 - 667683 - 667684 - 667683 - 667683 - 667682 - 0 - 8012194 + 672837 + 672841 + 672841 + 672841 + 672841 + 672842 + 672841 + 672841 + 672842 + 672841 + 672841 + 672841 + 0 + 8074090 - 601940 - 601943 - 601942 - 601941 - 601943 - 601942 - 601943 - 601942 - 601942 - 601942 - 601943 - 601942 - 601942 - 0 - 7825247 + 595160 + 595163 + 595162 + 595163 + 595161 + 595162 + 595162 + 595163 + 595162 + 595162 + 595162 + 595162 + 595162 + 0 + 7737106 - 592663 - 592666 - 592665 - 592665 - 592664 - 592667 - 592665 - 592665 - 592665 - 592664 - 592666 - 592665 - 592665 - 592666 - 0 - 8297311 + 581536 + 581540 + 581539 + 581539 + 581539 + 581539 + 581539 + 581538 + 581540 + 581539 + 581538 + 581539 + 581539 + 581540 + 0 + 8141544 - 493086 - 493087 - 493086 - 493087 - 493087 - 493087 - 493087 - 493087 - 493087 - 493086 - 493086 - 493087 - 493087 - 493086 - 493089 - 0 - 7396302 + 578439 + 578441 + 578442 + 578441 + 578442 + 578441 + 578442 + 578444 + 578441 + 578442 + 578441 + 578440 + 578441 + 578441 + 578442 + 0 + 8676620 - 462384 - 462386 - 462387 - 462386 - 462384 - 462385 - 462384 - 462384 - 462386 - 462385 - 462385 - 462384 - 462384 - 462385 - 462384 - 462385 - 0 - 7398158 + 527784 + 527783 + 527785 + 527784 + 527784 + 527783 + 527782 + 527784 + 527782 + 527782 + 527784 + 527783 + 527783 + 527783 + 527783 + 527783 + 0 + 8444532 - 444000 - 443997 - 443999 - 443999 - 444003 - 443999 - 443999 - 443999 - 444003 - 443997 - 444002 - 443998 - 444002 - 443995 - 444003 - 444000 - 444006 - 0 - 7548001 + 468012 + 468009 + 468009 + 468010 + 468011 + 468010 + 468011 + 468009 + 468009 + 468010 + 468011 + 468012 + 468009 + 468011 + 468011 + 468011 + 468012 + 0 + 7956177 - 405647 - 405651 - 405648 - 405644 - 405646 - 405651 - 405646 - 405646 - 405645 - 405647 - 405653 - 405650 - 405648 - 405650 - 405648 - 405648 - 405649 - 405646 - 0 - 7301663 + 439238 + 439222 + 439228 + 439225 + 439226 + 439228 + 439226 + 439219 + 439231 + 439213 + 439226 + 439215 + 439215 + 439222 + 439224 + 439217 + 439226 + 439230 + 0 + 7906031 - 368682 - 368649 - 368690 - 368691 - 368656 - 368663 - 368673 - 368669 - 368677 - 368677 - 368679 - 368687 - 368688 - 368686 - 368677 - 368681 - 368601 - 368584 - 368598 - 0 - 7004608 + 392577 + 392658 + 392677 + 392625 + 392645 + 392611 + 392643 + 392617 + 392519 + 392507 + 392525 + 392515 + 392513 + 392488 + 392567 + 392567 + 392175 + 392148 + 392153 + 0 + 7457730 - 377161 - 377163 - 377174 - 377191 - 377164 - 377131 - 377141 - 377109 - 377238 - 377231 - 377218 - 377227 - 377244 - 377234 - 377232 - 377216 - 376777 - 376775 - 376769 - 376796 - 0 - 7542191 + 393189 + 393145 + 393365 + 393284 + 393215 + 393191 + 393247 + 393229 + 392255 + 392239 + 392268 + 392259 + 392312 + 392395 + 392318 + 392431 + 389204 + 389161 + 389146 + 389191 + 0 + 7841044 - 344202 - 344622 - 344067 - 344419 - 343655 - 343922 - 343404 - 343235 - 352351 - 352850 - 352931 - 352932 - 353155 - 352736 - 352964 - 353029 - 290883 - 290649 - 290744 - 290552 - 291478 - 0 - 7028780 + 333867 + 333818 + 333796 + 333998 + 333786 + 333970 + 333966 + 333946 + 331691 + 331644 + 331574 + 331570 + 331815 + 331757 + 331873 + 331902 + 321858 + 321819 + 321778 + 321915 + 322036 + 0 + 6934379 - 320717 - 320587 - 320424 - 320715 - 320905 - 316975 - 316841 - 317262 - 315703 - 319811 - 319117 - 319402 - 320093 - 319963 - 320021 - 320218 - 288739 - 288974 - 289159 - 289033 - 288433 - 284984 - 0 - 6838076 + 336076 + 336030 + 335863 + 335861 + 335954 + 336069 + 335963 + 335891 + 336178 + 335697 + 335574 + 335581 + 335586 + 336068 + 336138 + 336049 + 330987 + 330865 + 331086 + 330937 + 331150 + 330937 + 0 + 7360540 - 318178 - 318395 - 319081 - 318467 - 318876 - 315686 - 315218 - 315397 - 313680 - 317143 - 317234 - 317102 - 317395 - 317189 - 317487 - 317394 - 305239 - 304909 - 305590 - 305457 - 305662 - 303160 - 304358 - 0 - 7208297 + 317093 + 317207 + 317153 + 317177 + 317207 + 317164 + 317198 + 317132 + 317445 + 317166 + 317044 + 317000 + 317012 + 317587 + 317522 + 317568 + 315579 + 315563 + 315657 + 315582 + 315453 + 315445 + 315774 + 0 + 7284728 - 299263 - 298742 - 300224 - 299675 - 300411 - 292962 - 292878 - 293233 - 286026 - 294896 - 294288 - 294873 - 294293 - 294051 - 294365 - 293904 - 298269 - 298190 - 298452 - 298896 - 299491 - 290312 - 290176 - 298399 - 0 - 7096269 + 312519 + 312750 + 312612 + 312671 + 312685 + 312707 + 312543 + 312680 + 313250 + 312566 + 312775 + 312827 + 312652 + 313141 + 313261 + 313270 + 312883 + 312649 + 312529 + 312615 + 312755 + 312833 + 312673 + 312728 + 0 + 7506574 - 149884 - 149885 - 149884 - 149884 - 149884 - 149884 - 149884 - 149885 - 149884 - 149884 - 149885 - 149885 - 149884 - 149884 - 149884 - 149886 - 149884 - 149884 - 149884 - 149885 - 149884 - 149884 - 149884 - 149885 - 3597224 - 3597224 + 149325 + 149327 + 149325 + 149325 + 149325 + 149327 + 149325 + 149324 + 149326 + 149325 + 149326 + 149326 + 149326 + 149325 + 149325 + 149325 + 149325 + 149325 + 149325 + 149326 + 149325 + 149326 + 149325 + 149325 + 3583809 + 3583809 - 207836 - 207836 - 207836 - 207836 - 207835 - 207835 - 207837 - 207837 - 207835 - 207836 - 207836 - 207837 - 207836 - 207836 - 207836 - 207835 - 207836 - 207837 - 207836 - 207835 - 207836 - 207836 - 207835 - 207835 - 4988061 - 4988061 + 219612 + 219612 + 219612 + 219612 + 219612 + 219612 + 219613 + 219612 + 219612 + 219614 + 219612 + 219611 + 219613 + 219614 + 219612 + 219612 + 219613 + 219613 + 219611 + 219612 + 219611 + 219612 + 219612 + 219613 + 5270694 + 5270694 - 18650458 + 17976591 0 - 18650458 + 17976591 - 17783819 - 17785099 + 17093434 + 17094750 0 - 35568918 + 34188184 - 16520473 - 16521638 - 17564324 + 16126005 + 16127191 + 16875254 0 - 50606435 + 49128450 - 16137393 - 16138619 - 16303116 - 16302393 + 15412620 + 15413887 + 15366643 + 15366578 0 - 64881521 + 61559728 - 16215163 - 16216385 - 16419724 - 16418949 - 16568002 + 16308721 + 16310021 + 16318960 + 16318983 + 16426938 0 - 81838223 + 81683623 - 15565201 - 15566389 - 15685815 - 15685127 - 15620223 - 15620726 - 0 - 93743481 + 15193884 + 15195117 + 15113407 + 15121476 + 15104027 + 15104373 + 0 + 90832284 - 15943795 - 15944974 - 15977607 - 15977022 - 15903753 - 15904253 - 16117471 - 0 - 111768875 + 15794728 + 15792858 + 15790710 + 15798703 + 15746011 + 15746393 + 15839713 + 0 + 110509116 - 15239786 - 15240906 - 15327597 - 15326914 - 15310067 - 15310575 - 15337426 - 15336718 - 0 - 122429989 + 14538979 + 14540011 + 14540067 + 14543590 + 14523331 + 14523800 + 14541196 + 14543759 + 0 + 116294733 - 15454569 - 15455745 - 15503002 - 15502385 - 15413852 - 15414319 - 15520760 - 15520203 - 18688666 - 0 - 142473501 + 14597172 + 14598178 + 14594621 + 14598190 + 14558148 + 14558565 + 14603981 + 14614317 + 18013252 + 0 + 134736424 - 15380608 - 15381745 - 15462107 - 15461369 - 15401483 - 15401869 - 15477566 - 15476963 - 17527446 - 17527935 - 0 - 158499091 + 14529346 + 14530425 + 14525274 + 14530395 + 14501600 + 14501959 + 14539379 + 14546701 + 16764576 + 16764953 + 0 + 149734608 - 15391003 - 15392179 - 15471014 - 15470425 - 15386413 - 15386829 - 15487034 - 15486425 - 16657492 - 16658025 - 17594537 - 0 - 174381376 + 14552313 + 14545774 + 14543859 + 14545590 + 14521699 + 14522178 + 14548350 + 14554882 + 15834293 + 15834734 + 16861946 + 0 + 164865618 - 15339827 - 15341004 - 15416423 - 15415808 - 15324518 - 15324985 - 15428303 - 15427710 - 16046885 - 16047411 - 16267282 - 16266605 - 0 - 187646761 + 14544735 + 14545749 + 14545348 + 14545729 + 14531175 + 14531582 + 14545221 + 14552316 + 15709806 + 15710183 + 15613298 + 15613336 + 0 + 178988478 - 15453325 - 15454520 - 15499213 - 15498628 - 15475931 - 15476378 - 15538095 - 15537475 - 16215480 - 16215815 - 16444160 - 16443272 - 16628160 - 0 - 205880452 + 14631943 + 14629081 + 14626428 + 14629173 + 14592751 + 14593171 + 14633428 + 14642988 + 16103014 + 16103498 + 16121344 + 16121522 + 16592935 + 0 + 198021276 - 15241659 - 15242764 - 15311552 - 15310874 - 15234807 - 15235319 - 15320844 - 15320408 - 15612980 - 15613446 - 15700518 - 15699717 - 15643397 - 15643757 - 0 - 216132042 + 14663977 + 14657392 + 14653868 + 14657385 + 14618995 + 14619260 + 14663280 + 14669006 + 14932649 + 14933133 + 14914884 + 14922839 + 14912239 + 14912618 + 0 + 206731525 - 15474021 - 15475103 - 15545724 - 15545077 - 15487261 - 15487666 - 15563087 - 15562461 - 15951382 - 15951714 - 15990339 - 15989672 - 15837008 - 15837501 - 16183725 - 0 - 235881741 + 14574685 + 14571820 + 14569180 + 14571882 + 14535038 + 14535448 + 14576273 + 14588007 + 15847051 + 15847907 + 15842926 + 15845292 + 15844741 + 15845144 + 15858663 + 0 + 227454057 - 15338755 - 15339912 - 15418316 - 15417717 - 15384213 - 15384612 - 15484391 - 15483850 - 15342729 - 15343053 - 15438680 - 15438045 - 15319617 - 15320187 - 15504952 - 15504342 - 0 - 246463371 + 14565742 + 14566794 + 14563059 + 14566698 + 14539138 + 14539550 + 14572545 + 14582815 + 14708684 + 14709444 + 14704986 + 14705363 + 14739299 + 14739959 + 14685047 + 14684929 + 0 + 234174052 - 15405565 - 15406721 - 15457536 - 15456970 - 15410823 - 15411363 - 15494352 - 15493781 - 15441835 - 15442322 - 15503323 - 15502544 - 15437462 - 15437892 - 15524904 - 15524299 - 18727294 - 0 - 266078986 + 14578846 + 14579881 + 14577981 + 14579886 + 14572709 + 14573049 + 14582536 + 14584350 + 15007742 + 15008395 + 15007420 + 15007658 + 15014167 + 15014785 + 15005244 + 15005419 + 18174844 + 0 + 254874912 - 15411917 - 15413065 - 15488119 - 15487404 - 15447208 - 15447653 - 15509190 - 15508612 - 15263061 - 15263449 - 15395370 - 15394701 - 15251795 - 15252271 - 15428945 - 15428419 - 17509130 - 17509588 - 0 - 281409897 + 14520800 + 14521760 + 14516500 + 14519179 + 14488245 + 14488682 + 14533956 + 14545682 + 14854184 + 14854859 + 14853940 + 14854226 + 14853922 + 14854597 + 14853928 + 14854269 + 16695502 + 16695771 + 0 + 268360002 - 15454721 - 15455814 - 15531336 - 15530736 - 15476168 - 15476627 - 15526814 - 15526279 - 15499278 - 15499646 - 15569191 - 15568610 - 15479546 - 15480059 - 15581751 - 15581161 - 16679062 - 16679513 - 17632923 - 0 - 299229235 + 14767102 + 14756811 + 14754774 + 14756725 + 14720166 + 14720526 + 14759446 + 14768164 + 15010901 + 15011570 + 15010636 + 15010954 + 15010667 + 15011279 + 15010747 + 15011090 + 16740850 + 16741140 + 16740556 + 0 + 288314104 - 15431594 - 15432731 - 15514464 - 15513801 - 15451554 - 15452178 - 15542494 - 15542059 - 15405806 - 15406166 - 15500615 - 15499854 - 15446807 - 15447370 - 15523598 - 15522911 - 15989393 - 15989822 - 16266926 - 16266215 - 0 - 312146358 + 14503694 + 14504695 + 14504309 + 14504656 + 14481517 + 14481930 + 14504225 + 14511441 + 14881230 + 14881959 + 14880910 + 14881278 + 14881048 + 14881629 + 14881078 + 14881274 + 15921487 + 15921957 + 15772241 + 15772141 + 0 + 298434699 - 15293855 - 15294996 - 15373983 - 15373359 - 15311033 - 15311444 - 15373601 - 15373029 - 15368606 - 15368996 - 15417455 - 15416655 - 15365477 - 15366045 - 15446382 - 15445857 - 16164636 - 16164755 - 16340626 - 16339807 - 16482233 - 0 - 327392830 + 14585345 + 14586417 + 14584462 + 14586324 + 14561834 + 14562194 + 14589003 + 14593127 + 14651792 + 14652414 + 14651588 + 14651811 + 14651560 + 14652081 + 14651657 + 14651849 + 15956242 + 15956591 + 15917381 + 15917342 + 16692459 + 0 + 314303473 - 15354609 - 15355720 - 15441225 - 15440578 - 15389118 - 15389555 - 15469844 - 15469275 - 15396674 - 15397078 - 15476343 - 15475695 - 15420378 - 15420856 - 15512565 - 15512017 - 15639668 - 15640093 - 15835975 - 15835235 - 15719480 - 15719975 - 0 - 341311956 + 14567398 + 14564632 + 14561858 + 14564593 + 14537808 + 14538183 + 14568901 + 14571570 + 14824939 + 14825595 + 14824563 + 14824936 + 14824664 + 14825180 + 14824622 + 14824869 + 15000394 + 15000816 + 15132415 + 15132390 + 14957113 + 14957467 + 0 + 325254906 - 15297511 - 15298619 - 15387117 - 15386585 - 15255545 - 15256058 - 15397294 - 15396755 - 15311096 - 15311488 - 15393982 - 15393274 - 15351229 - 15351821 - 15422331 - 15421750 - 15937897 - 15938202 - 15961738 - 15961104 - 15827119 - 15827606 - 16046878 - 0 - 357132999 + 14533130 + 14526680 + 14523900 + 14526694 + 14473827 + 14474177 + 14530917 + 14540399 + 14689348 + 14690045 + 14689080 + 14689352 + 14689191 + 14689822 + 14689153 + 14689383 + 15149225 + 15149721 + 15149099 + 15149020 + 15149087 + 15149374 + 15723066 + 0 + 340263690 - 15359254 - 15360492 - 15486820 - 15486239 - 15373528 - 15373958 - 15523810 - 15523194 - 15449725 - 15450145 - 15501565 - 15500907 - 15423597 - 15424099 - 15510174 - 15509555 - 15333282 - 15333567 - 15417102 - 15416446 - 15366931 - 15367424 - 15326844 - 15326340 - 0 - 370144998 + 14520191 + 14521316 + 14520064 + 14521273 + 14508861 + 14509277 + 14522439 + 14523376 + 14971139 + 14971788 + 14970834 + 14971145 + 14970850 + 14971356 + 14970773 + 14971212 + 14302288 + 14302674 + 14292318 + 14292258 + 14327757 + 14328109 + 14203917 + 14204596 + 0 + 350169811 - 12012163 + 12082070 0 - 12012163 + 12082070 - 11840550 - 11841478 + 11860565 + 11861524 0 - 23682028 + 23722089 - 10912829 - 11686722 - 11363920 + 10937185 + 11666176 + 11377885 0 - 33963471 + 33981246 - 10847812 - 11012883 - 10848750 - 10848348 + 10711169 + 11044642 + 10712186 + 10711772 0 - 43557793 + 43179769 - 10672194 - 10766080 - 10686688 - 10686256 - 10751786 + 10681736 + 10803241 + 10697774 + 10697365 + 10786731 0 - 53563004 + 53666847 - 10191331 - 10427635 - 10213958 - 10213515 - 10190660 - 10413043 - 0 - 61650142 + 10202899 + 10453899 + 10236078 + 10235641 + 10203405 + 10435466 + 0 + 61767388 - 10094413 - 10150145 - 10099599 - 10099212 - 10095359 - 10145507 - 10157424 - 0 - 70841659 + 10057432 + 10126310 + 10062880 + 10062441 + 10056560 + 10117801 + 10136814 + 0 + 70620238 - 9482692 - 9538919 - 9475649 - 9475299 - 9487665 - 9526988 - 9484104 - 9483770 - 0 - 75955086 + 9534620 + 9563972 + 9529566 + 9529136 + 9534974 + 9559121 + 9532504 + 9532098 + 0 + 76315991 - 9551538 - 9607950 - 9527892 - 9527539 - 9541318 - 9599380 - 9545003 - 9544655 - 12100821 - 0 - 88546096 + 9588196 + 9644812 + 9569541 + 9569144 + 9588269 + 9635446 + 9587520 + 9587124 + 12171038 + 0 + 88941090 - 9518208 - 9590167 - 9501471 - 9501014 - 9514888 - 9580544 - 9520640 - 9520357 - 11901852 - 11902280 - 0 - 100051421 + 9494406 + 9569092 + 9483166 + 9482828 + 9494096 + 9549855 + 9493566 + 9493228 + 11870461 + 11870751 + 0 + 99801449 - 9588133 - 9642600 - 9569435 - 9569077 - 9581625 - 9634480 - 9582599 - 9582254 - 11143802 - 11642425 - 11430365 - 0 - 110966795 + 9547513 + 9618639 + 9531079 + 9530708 + 9544013 + 9582528 + 9546188 + 9545855 + 10981480 + 11695200 + 11417956 + 0 + 110541159 - 9504141 - 9566497 - 9480268 - 9479883 - 9500138 - 9557387 - 9508730 - 9508263 - 10860480 - 11079334 - 10860904 - 10860416 - 0 - 119766441 + 9480940 + 9534711 + 9471781 + 9471472 + 9481875 + 9525995 + 9478339 + 9478029 + 10711265 + 11114755 + 10711627 + 10711294 + 0 + 119172083 - 9566731 - 9602398 - 9555023 - 9554678 - 9565409 - 9597597 - 9568768 - 9568372 - 10697869 - 10788567 - 10705386 - 10704917 - 10773483 - 0 - 130249198 + 9546022 + 9587726 + 9539512 + 9539112 + 9546798 + 9572802 + 9547437 + 9547014 + 10700918 + 10778357 + 10711682 + 10711355 + 10766560 + 0 + 130095295 - 9498902 - 9573902 - 9477978 - 9477580 - 9495093 - 9562850 - 9505874 - 9505569 - 10259456 - 10479812 - 10274650 - 10274227 - 10255667 - 10470946 - 0 - 138112506 + 9529110 + 9587899 + 9523029 + 9522600 + 9529393 + 9562307 + 9531767 + 9531364 + 10124795 + 10538492 + 10167869 + 10167494 + 10101866 + 10500389 + 0 + 137918374 - 9568054 - 9610830 - 9556810 - 9556463 - 9564043 - 9605955 - 9567781 - 9567465 - 10121955 - 10176705 - 10126901 - 10126506 - 10122670 - 10170121 - 10183118 - 0 - 147625377 + 9566449 + 9604833 + 9559288 + 9558898 + 9567098 + 9599387 + 9566496 + 9566147 + 10075047 + 10164135 + 10082703 + 10082326 + 10075244 + 10155140 + 10178314 + 0 + 147401505 - 9545502 - 9606047 - 9529441 - 9529036 - 9542921 - 9596990 - 9546969 - 9546662 - 9500406 - 9584384 - 9472779 - 9472417 - 9493981 - 9574576 - 9498520 - 9498159 - 0 - 152538790 + 9508977 + 9585956 + 9501428 + 9501014 + 9508465 + 9556360 + 9512315 + 9511916 + 9534416 + 9549972 + 9531251 + 9530849 + 9535299 + 9547690 + 9533669 + 9533330 + 0 + 152482907 - 9477441 - 9536545 - 9460577 - 9460200 - 9480967 - 9523923 - 9480392 - 9480046 - 9487515 - 9547565 - 9474196 - 9473749 - 9487160 - 9540682 - 9486801 - 9486447 - 12011930 - 0 - 163896136 + 9456577 + 9518572 + 9448329 + 9447904 + 9456755 + 9492156 + 9456619 + 9456290 + 9469695 + 9504090 + 9467165 + 9466779 + 9469736 + 9490753 + 9470460 + 9470100 + 12081737 + 0 + 163623717 - 9513232 - 9584994 - 9492399 - 9492017 - 9508104 - 9572238 - 9515215 - 9514855 - 9509726 - 9564574 - 9497507 - 9497104 - 9506890 - 9556927 - 9511038 - 9510683 - 11964542 - 11964965 - 0 - 176277010 + 9528572 + 9578324 + 9512159 + 9511743 + 9526173 + 9569951 + 9534866 + 9534526 + 9544758 + 9593215 + 9539533 + 9539119 + 9545198 + 9585695 + 9543578 + 9543186 + 11927396 + 11927804 + 0 + 176585796 - 9501239 - 9566300 - 9480114 - 9479759 - 9497499 - 9554053 - 9504428 - 9504112 - 9450537 - 9500082 - 9437165 - 9436702 - 9448376 - 9494933 - 9452444 - 9452215 - 11096186 - 11513346 - 11336141 - 0 - 185705631 + 9477447 + 9564597 + 9452396 + 9451981 + 9473225 + 9533594 + 9478730 + 9478355 + 9491282 + 9542542 + 9469974 + 9469570 + 9488649 + 9533937 + 9493941 + 9493595 + 10869069 + 11610326 + 11333158 + 0 + 185706368 - 9486065 - 9557588 - 9472473 - 9472199 - 9487667 - 9548271 - 9491616 - 9491243 - 9529780 - 9607162 - 9514560 - 9514178 - 9525187 - 9594754 - 9529212 - 9528811 - 10901458 - 11097405 - 10901870 - 10901433 - 0 - 196152932 + 9513336 + 9581580 + 9502256 + 9501888 + 9514403 + 9561923 + 9510586 + 9510218 + 9577756 + 9601845 + 9576720 + 9576333 + 9576562 + 9591627 + 9575875 + 9575454 + 10774344 + 11131500 + 10795173 + 10794817 + 0 + 196344196 - 9465819 - 9552112 - 9442548 - 9442197 - 9460727 - 9539920 - 9467314 - 9466941 - 9499616 - 9555215 - 9480992 - 9480585 - 9497803 - 9549084 - 9503779 - 9503347 - 10632691 - 10740462 - 10643969 - 10643484 - 10722706 - 0 - 205291311 + 9489784 + 9553505 + 9480407 + 9480031 + 9487187 + 9517609 + 9490215 + 9489795 + 9480100 + 9512956 + 9469789 + 9469408 + 9478224 + 9507407 + 9480884 + 9480522 + 10558463 + 10781768 + 10586536 + 10586157 + 10751665 + 0 + 205132412 - 9543555 - 9577947 - 9536419 - 9536025 - 9545186 - 9572363 - 9545696 - 9545380 - 9546863 - 9598252 - 9538891 - 9538471 - 9544650 - 9589800 - 9548809 - 9548442 - 10257926 - 10464973 - 10271404 - 10270974 - 10255638 - 10453549 - 0 - 214831213 + 9529280 + 9596479 + 9526225 + 9525841 + 9530068 + 9560604 + 9526967 + 9526692 + 9535973 + 9579641 + 9521811 + 9521452 + 9533157 + 9572320 + 9537636 + 9537265 + 10282870 + 10460861 + 10307364 + 10307036 + 10284193 + 10447335 + 0 + 214751070 - 9505256 - 9546515 - 9487064 - 9486709 - 9503819 - 9540926 - 9507421 - 9507083 - 9463245 - 9512217 - 9445442 - 9444922 - 9462724 - 9505280 - 9465093 - 9464656 - 10061481 - 10110674 - 10057745 - 10057332 - 10065338 - 10106393 - 10117053 - 0 - 222424388 + 9474195 + 9526351 + 9466045 + 9465650 + 9474273 + 9509635 + 9475163 + 9474803 + 9527687 + 9582242 + 9516774 + 9516407 + 9526734 + 9556254 + 9528842 + 9528456 + 9971596 + 10094615 + 9984885 + 9984498 + 9969546 + 10080306 + 10113352 + 0 + 222348309 - 9509934 - 9589757 - 9487081 - 9486681 - 9504741 - 9577778 - 9512299 - 9511943 - 9495683 - 9576547 - 9477429 - 9476945 - 9488619 - 9564424 - 9497789 - 9497366 - 9576435 - 9594541 - 9569473 - 9569144 - 9576206 - 9592059 - 9571494 - 9591007 - 0 - 228895375 + 9570183 + 9596856 + 9566396 + 9565955 + 9570347 + 9592890 + 9571708 + 9571344 + 9568931 + 9609557 + 9562498 + 9562127 + 9567335 + 9602518 + 9566096 + 9565736 + 9608409 + 9631716 + 9604886 + 9604505 + 9607807 + 9629640 + 9603907 + 9629626 + 0 + 230130973 - 913947 - 914257 - 914150 - 914145 - 914171 - 914150 - 914168 - 914180 - 910191 - 910177 - 910157 - 910172 - 910177 - 910146 - 910166 - 910159 - 910137 - 910144 - 910132 - 910150 - 910160 - 910110 - 910156 - 910129 - 2093981 - 21875631 + 903446 + 903762 + 903658 + 903679 + 903658 + 903690 + 903665 + 903667 + 905432 + 905463 + 905415 + 905426 + 905442 + 905442 + 905434 + 905417 + 902746 + 902734 + 902731 + 902719 + 902734 + 902750 + 902746 + 902708 + 2057722 + 21694564 - 866859 - 967353 - 887770 - 887751 - 867070 - 967115 - 887992 - 887922 - 871507 - 973319 - 891012 - 890973 - 869760 - 971285 - 896445 - 896401 - 864682 - 963546 - 885639 - 885592 - 864194 - 963193 - 861691 - 953868 - 1771393 - 21722939 + 859801 + 967785 + 883645 + 883619 + 860037 + 968025 + 883058 + 883016 + 865337 + 974824 + 882369 + 882341 + 863544 + 972159 + 892721 + 892715 + 857049 + 963725 + 880627 + 880584 + 856853 + 963380 + 854026 + 952345 + 1763851 + 21623585 - 123820 - 123819 - 123820 - 123819 - 123820 - 123819 - 123820 - 123820 - 123819 - 123820 - 123820 - 123820 - 123819 - 123819 - 123820 - 123819 - 123820 - 123820 - 123819 - 123819 - 123819 - 123819 - 123819 - 123819 - 0 - 2971667 + 122500 + 122500 + 122500 + 122500 + 122499 + 122500 + 122500 + 122500 + 122500 + 122500 + 122500 + 122500 + 122500 + 122500 + 122500 + 122500 + 122499 + 122501 + 122500 + 122500 + 122501 + 122501 + 122501 + 122501 + 0 + 2940003 - 112523 - 112524 - 112523 - 112523 - 112522 - 112523 - 112523 - 112524 - 112522 - 112524 - 112523 - 112523 - 112524 - 112523 - 112523 - 112523 - 112523 - 112524 - 112523 - 112523 - 112524 - 112525 - 112523 - 112524 - 0 - 2700559 + 109856 + 109857 + 109857 + 109856 + 109857 + 109856 + 109857 + 109857 + 109856 + 109856 + 109857 + 109858 + 109858 + 109857 + 109856 + 109856 + 109858 + 109857 + 109857 + 109857 + 109856 + 109857 + 109856 + 109857 + 0 + 2636562 - 2442341 + 2443697 1 - 19 - 3 - 7 - 14 - 17 - 40 - 735 - 692 - 749 - 714 - 698 - 681 - 687 - 673 - 781 - 763 - 754 - 786 - 747 - 704 - 800 - 755 - 0 - 2454161 + 11 + 19 + 34 + 4 + 11 + 27 + 738 + 715 + 708 + 710 + 716 + 722 + 663 + 680 + 818 + 816 + 798 + 793 + 749 + 737 + 681 + 713 + 0 + 2455561 + + 19899718 + 0 + 19899718 + + + 11323121 + 8390566 + 0 + 19713687 + + + 3505442 + 3505599 + 12137521 + 0 + 19148562 + + + 3973366 + 3973543 + 5643661 + 5644098 + 0 + 19234668 + + + 3605358 + 3605432 + 5184535 + 5184801 + 1514959 + 0 + 19095085 + + + 3062204 + 3061638 + 2657329 + 2657997 + 3694149 + 3693569 + 0 + 18826886 + + + 1413952 + 1413322 + 5634774 + 5634907 + 807079 + 806823 + 2780299 + 0 + 18491156 + + + 2266504 + 2264023 + 2150464 + 2152501 + 2234184 + 2235885 + 2045159 + 2042094 + 0 + 17390814 + + + 378978 + 493897 + 540956 + 307717 + 559266 + 435771 + 289002 + 524768 + 904 + 0 + 3531259 + + + 315240 + 314639 + 343225 + 343430 + 330617 + 273430 + 114457 + 400594 + 199708 + 398954 + 0 + 3034294 + + + 398649 + 243725 + 313197 + 341559 + 400879 + 485957 + 256149 + 312463 + 79929 + 79959 + 61 + 0 + 2912527 + + + 200097 + 314280 + 484541 + 400413 + 187776 + 244998 + 244859 + 330577 + 159931 + 122121 + 159973 + 199451 + 0 + 3049017 + + + 104 + 145 + 209 + 169 + 206 + 120 + 166 + 188 + 798353 + 639101 + 1237960 + 840661 + 439274 + 0 + 3956656 + + + 80 + 111 + 119 + 149 + 169 + 117 + 126 + 139 + 574829 + 803988 + 370549 + 846318 + 608269 + 608119 + 0 + 3813082 + + + 8 + 20 + 34 + 65 + 84 + 38 + 60 + 95 + 482715 + 607538 + 482392 + 667855 + 409336 + 630426 + 408163 + 0 + 3688829 + + + 117285 + 117670 + 117122 + 116813 + 117713 + 117774 + 117459 + 117328 + 303833 + 326784 + 277325 + 373516 + 263215 + 390871 + 446935 + 301501 + 0 + 3623144 + + + 341558 + 231787 + 347677 + 218478 + 303719 + 154437 + 229631 + 216461 + 123537 + 103366 + 55161 + 90025 + 84691 + 68924 + 53786 + 190767 + 986 + 0 + 2814991 + + + 200069 + 264598 + 170182 + 138554 + 102824 + 175867 + 284187 + 164345 + 233732 + 178177 + 140189 + 153958 + 123252 + 227322 + 194095 + 54981 + 1079 + 1026 + 0 + 2808437 + + + 321115 + 371397 + 225899 + 354262 + 361476 + 350114 + 291933 + 196999 + 22397 + 25153 + 102182 + 21372 + 70582 + 29948 + 18969 + 57177 + 477 + 391 + 916 + 0 + 2822759 + + + 393436 + 309283 + 168529 + 224983 + 196844 + 140974 + 197196 + 84830 + 111946 + 111914 + 112325 + 112014 + 168007 + 111972 + 112201 + 252562 + 49 + 41 + 37 + 44 + 0 + 2809187 + + + 183153 + 263091 + 196238 + 56135 + 252253 + 112377 + 168624 + 252596 + 195948 + 43703 + 140073 + 223721 + 251924 + 169611 + 112360 + 168176 + 41 + 14 + 29 + 41 + 41 + 0 + 2790149 + + + 84315 + 168428 + 56084 + 280784 + 160642 + 195812 + 224182 + 112335 + 223416 + 279221 + 223306 + 195550 + 83826 + 83644 + 153478 + 251574 + 31 + 17 + 26 + 27 + 31 + 22 + 0 + 2776751 + + + 251094 + 111612 + 111946 + 250878 + 270360 + 83918 + 167667 + 251032 + 201670 + 195227 + 167446 + 194880 + 194852 + 83768 + 160169 + 83658 + 141 + 133 + 122 + 117 + 136 + 115 + 104 + 0 + 2781045 + + + 132034 + 131676 + 132311 + 131443 + 132250 + 131733 + 131193 + 131281 + 122650 + 123113 + 123745 + 123264 + 123158 + 122764 + 123050 + 123616 + 122054 + 122876 + 122080 + 121904 + 122223 + 122088 + 121899 + 122670 + 0 + 3017075 + + + 19645977 + 0 + 19645977 + + + 4310217 + 15293675 + 0 + 19603892 + + + 9402863 + 9226207 + 437594 + 0 + 19066664 + + + 3386951 + 3201931 + 6304744 + 6305238 + 0 + 19198864 + + + 4092852 + 3899527 + 2520768 + 2175848 + 5948549 + 0 + 18637544 + + + 2597841 + 2443137 + 3331024 + 2708000 + 4093981 + 3080494 + 0 + 18254477 + + + 1216614 + 2258952 + 1291063 + 1114575 + 5532606 + 5466345 + 1405693 + 0 + 18285848 + + + 2086492 + 2244683 + 2112130 + 2067114 + 2081711 + 2090180 + 2168032 + 2534478 + 0 + 17384820 + + + 634132 + 601192 + 480382 + 657643 + 592079 + 740174 + 465043 + 642726 + 3226 + 0 + 4816597 + + + 142972 + 387723 + 457567 + 302196 + 314638 + 457645 + 371900 + 428999 + 691 + 362 + 0 + 2864693 + + + 355770 + 383778 + 369646 + 256341 + 327558 + 242178 + 398681 + 483955 + 176 + 201 + 67 + 0 + 2818351 + + + 457238 + 142885 + 416308 + 318737 + 371610 + 228382 + 429095 + 502040 + 160 + 115 + 191 + 108 + 0 + 2866869 + + + 155562 + 155271 + 154524 + 155620 + 155737 + 155945 + 156319 + 155596 + 526245 + 524881 + 495452 + 497374 + 586585 + 0 + 3875111 + + + 862 + 739 + 902 + 876 + 922 + 881 + 877 + 945 + 798225 + 545250 + 758729 + 466001 + 638255 + 660193 + 0 + 3873657 + + + 198289 + 203179 + 199945 + 199124 + 201799 + 199812 + 199839 + 199732 + 314842 + 291197 + 294608 + 286440 + 375388 + 316600 + 354856 + 0 + 3835650 + + + 104577 + 489911 + 466186 + 366690 + 252721 + 460887 + 253823 + 113506 + 120249 + 46275 + 159071 + 83449 + 177618 + 120903 + 191314 + 263287 + 0 + 3670467 + + + 234559 + 118245 + 219127 + 295109 + 248960 + 181934 + 297815 + 322059 + 163004 + 174212 + 26569 + 77433 + 133062 + 232843 + 33886 + 82456 + 4914 + 0 + 2846187 + + + 271262 + 355312 + 50921 + 148825 + 245230 + 182256 + 187273 + 255451 + 185514 + 44729 + 112757 + 98411 + 207969 + 185668 + 172032 + 109135 + 2423 + 2380 + 0 + 2817548 + + + 261804 + 234937 + 211116 + 198275 + 153636 + 353607 + 368351 + 369817 + 117702 + 41853 + 75374 + 125194 + 87239 + 58610 + 63622 + 96700 + 1021 + 966 + 985 + 0 + 2820809 + + + 251976 + 118001 + 84641 + 140476 + 77669 + 274047 + 318570 + 170363 + 252676 + 140874 + 189186 + 121034 + 161358 + 165381 + 141826 + 205937 + 118 + 77 + 70 + 94 + 0 + 2814374 + + + 84213 + 196158 + 196680 + 112159 + 224637 + 252342 + 140314 + 84179 + 223626 + 196078 + 111882 + 238331 + 252259 + 195491 + 83883 + 195126 + 52 + 26 + 35 + 44 + 41 + 0 + 2787556 + + + 31503 + 252623 + 196406 + 168591 + 140544 + 168154 + 280249 + 168483 + 195559 + 55718 + 139401 + 251481 + 222605 + 111214 + 139519 + 251258 + 46 + 26 + 31 + 39 + 39 + 41 + 0 + 2773530 + + + 139311 + 167336 + 278426 + 55951 + 139626 + 250691 + 223121 + 83809 + 194537 + 278533 + 139061 + 223216 + 194994 + 111343 + 186244 + 111364 + 142 + 126 + 121 + 122 + 124 + 125 + 124 + 0 + 2778447 + + + 127539 + 128004 + 127243 + 128231 + 128122 + 127956 + 128394 + 128093 + 121225 + 120770 + 120549 + 120785 + 120461 + 120591 + 121214 + 120733 + 120387 + 121153 + 121255 + 120737 + 120859 + 121071 + 121031 + 121163 + 0 + 2957566 + *** END OF TEST SMPLOCK 1 *** diff --git a/testsuites/smptests/smplock01/smplock01fair.py b/testsuites/smptests/smplock01/smplock01fair.py new file mode 100755 index 0000000000..23f85db23d --- /dev/null +++ b/testsuites/smptests/smplock01/smplock01fair.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python + +# +# Copyright (c) 2016 embedded brains GmbH. All rights reserved. +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.rtems.org/license/LICENSE. +# + +import re +import libxml2 +import math +import statistics +from libxml2 import xmlNode +import matplotlib.pyplot as plt +data = open('smplock01.scn').read() +data = re.sub(r'\*\*\*.*\*\*\*', '', data) +doc = libxml2.parseDoc(data) +ctx = doc.xpathNewContext() + +plt.title('SMP Lock Fairness') +plt.xlabel('Active Workers') +plt.ylabel('Normed Coefficient of Variation') + +i = 1 +ticket = [] +mcs = [] +tas = [] +ttas = [] + +def m(n): + return int(xmlNode.getContent(n)) + +def normedCoefficientOfVariation(name, i): + y = map(m, ctx.xpathEval('/SMPLock01/' + name + '[@activeWorker=' + str(i) + ']/LocalCounter')) + if len(y) == 0: + raise + return (statistics.stdev(y) / statistics.mean(y)) / math.sqrt(len(y) - 1) + +try: + while True: + i = i + 1 + ticket.append(normedCoefficientOfVariation('GlobalTicketLockWithLocalCounter', i)) + mcs.append(normedCoefficientOfVariation('GlobalMCSLockWithLocalCounter', i)) + tas.append(normedCoefficientOfVariation('GlobalTASLockWithLocalCounter', i)) + ttas.append(normedCoefficientOfVariation('GlobalTTASLockWithLocalCounter', i)) +except: + pass + +x = range(1, len(ticket) + 1) +plt.yscale('log') +plt.plot(x, ticket, label = 'Ticket Lock', marker = 'o') +plt.plot(x, mcs, label = 'MCS Lock', marker = 'o') +plt.plot(x, tas, label = 'TAS Lock', marker = 'o') +plt.plot(x, ttas, label = 'TTAS Lock', marker = 'o') +plt.legend(loc = 'best') +plt.show() diff --git a/testsuites/smptests/smplock01/smplock01perf.py b/testsuites/smptests/smplock01/smplock01perf.py new file mode 100755 index 0000000000..52db4d3cc1 --- /dev/null +++ b/testsuites/smptests/smplock01/smplock01perf.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python + +# +# Copyright (c) 2016 embedded brains GmbH. All rights reserved. +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.rtems.org/license/LICENSE. +# + +import re +import libxml2 +from libxml2 import xmlNode +import matplotlib.pyplot as plt +data = open('smplock01.scn').read() +data = re.sub(r'\*\*\*.*\*\*\*', '', data) +doc = libxml2.parseDoc(data) +ctx = doc.xpathNewContext() + +plt.title('SMP Lock Performance') +plt.xlabel('Active Workers') +plt.ylabel('Operation Count') + +y = map(xmlNode.getContent, ctx.xpathEval('/SMPLock01/GlobalTicketLockWithLocalCounter/SumOfLocalCounter')) +x = range(1, len(y) + 1) +plt.plot(x, y, label = 'Ticket Lock', marker = 'o') + +y = map(xmlNode.getContent, ctx.xpathEval('/SMPLock01/GlobalMCSLockWithLocalCounter/SumOfLocalCounter')) +plt.plot(x, y, label = 'MCS Lock', marker = 'o') + +y = map(xmlNode.getContent, ctx.xpathEval('/SMPLock01/GlobalTASLockWithLocalCounter/SumOfLocalCounter')) +plt.plot(x, y, label = 'TAS Lock', marker = 'o') + +y = map(xmlNode.getContent, ctx.xpathEval('/SMPLock01/GlobalTTASLockWithLocalCounter/SumOfLocalCounter')) +plt.plot(x, y, label = 'TTAS Lock', marker = 'o') + +plt.legend(loc = 'best') +plt.show() -- cgit v1.2.3