diff options
Diffstat (limited to 'testsuite/epoch01')
-rwxr-xr-x | testsuite/epoch01/epoch01.py | 79 | ||||
-rw-r--r-- | testsuite/epoch01/epoch01.scn | 2342 | ||||
-rw-r--r-- | testsuite/epoch01/test_main.c | 596 |
3 files changed, 3017 insertions, 0 deletions
diff --git a/testsuite/epoch01/epoch01.py b/testsuite/epoch01/epoch01.py new file mode 100755 index 00000000..8bfd8de3 --- /dev/null +++ b/testsuite/epoch01/epoch01.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python + +# +# Copyright (c) 2018 embedded brains GmbH. All rights reserved. +# +# embedded brains GmbH +# Dornierstr. 4 +# 82178 Puchheim +# Germany +# <rtems@embedded-brains.de> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +import re +import libxml2 +from libxml2 import xmlNode +import matplotlib.pyplot as plt +data = open('epoch01.scn').read() +data = re.sub(r'\*\*\*.*\*\*\*', '', data) +doc = libxml2.parseDoc(data) +ctx = doc.xpathNewContext() + +plt.yscale('log') +plt.title('Epoch Performance') +plt.xlabel('Active Workers') +plt.ylabel('Operation Count') + +def m(n): + return int(n.getContent()) + +def getCounterSums(variant): + w = 1 + y = [] + while True: + c = map(m, ctx.xpathEval('/TestEpoch01/' + variant + '[@activeWorker="' + str(w) + '"]/Counter')) + if not c: + break + y.append(sum(c)) + w = w + 1 + return y + +y = getCounterSums('ThreadLocalMutex') +x = range(1, len(y) + 1) +plt.plot(x, y, label = 'Thread-Local Mutex', marker = 'o') + +y = getCounterSums('EnterExit') +plt.plot(x, y, label = 'Enter Exit', marker = 'o') + +y = getCounterSums('EnterExitPreempt') +plt.plot(x, y, label = 'Enter Exit Preempt', marker = 'o') + +y = getCounterSums('EnterListOpExit') +plt.plot(x, y, label = 'Enter List Op Exit', marker = 'o') + +y = getCounterSums('EnterListOpExitPreempt') +plt.plot(x, y, label = 'Enter List Op Exit Preempt', marker = 'o') + +plt.legend(loc = 'best') +plt.show() diff --git a/testsuite/epoch01/epoch01.scn b/testsuite/epoch01/epoch01.scn new file mode 100644 index 00000000..aafebc5d --- /dev/null +++ b/testsuite/epoch01/epoch01.scn @@ -0,0 +1,2342 @@ +<TestEpoch01> + <EnterExit activeWorker="1"> + <Counter worker="0">4681303</Counter> + </EnterExit> + <EnterExit activeWorker="2"> + <Counter worker="0">3549510</Counter> + <Counter worker="1">3559719</Counter> + </EnterExit> + <EnterExit activeWorker="3"> + <Counter worker="0">3480802</Counter> + <Counter worker="1">3490567</Counter> + <Counter worker="2">4651841</Counter> + </EnterExit> + <EnterExit activeWorker="4"> + <Counter worker="0">3518160</Counter> + <Counter worker="1">3528002</Counter> + <Counter worker="2">3526473</Counter> + <Counter worker="3">3526462</Counter> + </EnterExit> + <EnterExit activeWorker="5"> + <Counter worker="0">3473951</Counter> + <Counter worker="1">3483916</Counter> + <Counter worker="2">3482262</Counter> + <Counter worker="3">3482276</Counter> + <Counter worker="4">4642986</Counter> + </EnterExit> + <EnterExit activeWorker="6"> + <Counter worker="0">3499124</Counter> + <Counter worker="1">3509073</Counter> + <Counter worker="2">3507477</Counter> + <Counter worker="3">3507459</Counter> + <Counter worker="4">3507449</Counter> + <Counter worker="5">3507487</Counter> + </EnterExit> + <EnterExit activeWorker="7"> + <Counter worker="0">3461429</Counter> + <Counter worker="1">3471389</Counter> + <Counter worker="2">3469767</Counter> + <Counter worker="3">3469750</Counter> + <Counter worker="4">3469775</Counter> + <Counter worker="5">3469767</Counter> + <Counter worker="6">4608209</Counter> + </EnterExit> + <EnterExit activeWorker="8"> + <Counter worker="0">3493807</Counter> + <Counter worker="1">3503732</Counter> + <Counter worker="2">3502201</Counter> + <Counter worker="3">3502218</Counter> + <Counter worker="4">3502206</Counter> + <Counter worker="5">3502205</Counter> + <Counter worker="6">3502191</Counter> + <Counter worker="7">3502238</Counter> + </EnterExit> + <EnterExit activeWorker="9"> + <Counter worker="0">3342598</Counter> + <Counter worker="1">3352508</Counter> + <Counter worker="2">3351027</Counter> + <Counter worker="3">3351021</Counter> + <Counter worker="4">3351036</Counter> + <Counter worker="5">3351046</Counter> + <Counter worker="6">3351027</Counter> + <Counter worker="7">3351055</Counter> + <Counter worker="8">4410507</Counter> + </EnterExit> + <EnterExit activeWorker="10"> + <Counter worker="0">3432709</Counter> + <Counter worker="1">3442606</Counter> + <Counter worker="2">3441223</Counter> + <Counter worker="3">3441252</Counter> + <Counter worker="4">3441253</Counter> + <Counter worker="5">3441239</Counter> + <Counter worker="6">3441252</Counter> + <Counter worker="7">3441215</Counter> + <Counter worker="8">3441178</Counter> + <Counter worker="9">3441189</Counter> + </EnterExit> + <EnterExit activeWorker="11"> + <Counter worker="0">3117605</Counter> + <Counter worker="1">3127512</Counter> + <Counter worker="2">3125832</Counter> + <Counter worker="3">3125836</Counter> + <Counter worker="4">3125819</Counter> + <Counter worker="5">3125838</Counter> + <Counter worker="6">3125842</Counter> + <Counter worker="7">3125817</Counter> + <Counter worker="8">3125776</Counter> + <Counter worker="9">3125788</Counter> + <Counter worker="10">4167639</Counter> + </EnterExit> + <EnterExit activeWorker="12"> + <Counter worker="0">3114562</Counter> + <Counter worker="1">3124485</Counter> + <Counter worker="2">3122722</Counter> + <Counter worker="3">3122707</Counter> + <Counter worker="4">3122707</Counter> + <Counter worker="5">3122714</Counter> + <Counter worker="6">3122709</Counter> + <Counter worker="7">3122716</Counter> + <Counter worker="8">3122678</Counter> + <Counter worker="9">3122670</Counter> + <Counter worker="10">3122679</Counter> + <Counter worker="11">3122657</Counter> + </EnterExit> + <EnterExit activeWorker="13"> + <Counter worker="0">2758135</Counter> + <Counter worker="1">2768036</Counter> + <Counter worker="2">2766152</Counter> + <Counter worker="3">2766147</Counter> + <Counter worker="4">2766152</Counter> + <Counter worker="5">2766144</Counter> + <Counter worker="6">2766134</Counter> + <Counter worker="7">2766166</Counter> + <Counter worker="8">2766125</Counter> + <Counter worker="9">2766121</Counter> + <Counter worker="10">2766129</Counter> + <Counter worker="11">2766121</Counter> + <Counter worker="12">3986835</Counter> + </EnterExit> + <EnterExit activeWorker="14"> + <Counter worker="0">2666731</Counter> + <Counter worker="1">2676680</Counter> + <Counter worker="2">2674562</Counter> + <Counter worker="3">2674527</Counter> + <Counter worker="4">2674549</Counter> + <Counter worker="5">2674538</Counter> + <Counter worker="6">2674531</Counter> + <Counter worker="7">2674574</Counter> + <Counter worker="8">2674514</Counter> + <Counter worker="9">2674524</Counter> + <Counter worker="10">2674513</Counter> + <Counter worker="11">2674517</Counter> + <Counter worker="12">2674517</Counter> + <Counter worker="13">2674507</Counter> + </EnterExit> + <EnterExit activeWorker="15"> + <Counter worker="0">2393863</Counter> + <Counter worker="1">2403773</Counter> + <Counter worker="2">2401561</Counter> + <Counter worker="3">2401557</Counter> + <Counter worker="4">2401575</Counter> + <Counter worker="5">2401541</Counter> + <Counter worker="6">2401562</Counter> + <Counter worker="7">2401559</Counter> + <Counter worker="8">2401531</Counter> + <Counter worker="9">2401542</Counter> + <Counter worker="10">2401537</Counter> + <Counter worker="11">2401551</Counter> + <Counter worker="12">2401537</Counter> + <Counter worker="13">2401535</Counter> + <Counter worker="14">3602503</Counter> + </EnterExit> + <EnterExit activeWorker="16"> + <Counter worker="0">2316897</Counter> + <Counter worker="1">2326796</Counter> + <Counter worker="2">2324443</Counter> + <Counter worker="3">2324416</Counter> + <Counter worker="4">2324416</Counter> + <Counter worker="5">2324424</Counter> + <Counter worker="6">2324405</Counter> + <Counter worker="7">2324440</Counter> + <Counter worker="8">2324378</Counter> + <Counter worker="9">2324353</Counter> + <Counter worker="10">2324394</Counter> + <Counter worker="11">2324371</Counter> + <Counter worker="12">2324367</Counter> + <Counter worker="13">2324383</Counter> + <Counter worker="14">2324369</Counter> + <Counter worker="15">2324394</Counter> + </EnterExit> + <EnterExit activeWorker="17"> + <Counter worker="0">2109578</Counter> + <Counter worker="1">2119491</Counter> + <Counter worker="2">2117067</Counter> + <Counter worker="3">2117056</Counter> + <Counter worker="4">2117089</Counter> + <Counter worker="5">2117047</Counter> + <Counter worker="6">2117057</Counter> + <Counter worker="7">2117085</Counter> + <Counter worker="8">2117019</Counter> + <Counter worker="9">2117028</Counter> + <Counter worker="10">2117009</Counter> + <Counter worker="11">2117035</Counter> + <Counter worker="12">2117003</Counter> + <Counter worker="13">2117018</Counter> + <Counter worker="14">2117030</Counter> + <Counter worker="15">2117003</Counter> + <Counter worker="16">3264476</Counter> + </EnterExit> + <EnterExit activeWorker="18"> + <Counter worker="0">2062704</Counter> + <Counter worker="1">2072566</Counter> + <Counter worker="2">2070055</Counter> + <Counter worker="3">2070092</Counter> + <Counter worker="4">2070069</Counter> + <Counter worker="5">2070075</Counter> + <Counter worker="6">2070078</Counter> + <Counter worker="7">2070076</Counter> + <Counter worker="8">2070032</Counter> + <Counter worker="9">2070030</Counter> + <Counter worker="10">2070033</Counter> + <Counter worker="11">2070045</Counter> + <Counter worker="12">2070034</Counter> + <Counter worker="13">2070017</Counter> + <Counter worker="14">2070038</Counter> + <Counter worker="15">2070040</Counter> + <Counter worker="16">2070051</Counter> + <Counter worker="17">2070071</Counter> + </EnterExit> + <EnterExit activeWorker="19"> + <Counter worker="0">1951736</Counter> + <Counter worker="1">1961591</Counter> + <Counter worker="2">1784490</Counter> + <Counter worker="3">1784459</Counter> + <Counter worker="4">1959411</Counter> + <Counter worker="5">1959415</Counter> + <Counter worker="6">1959461</Counter> + <Counter worker="7">1959482</Counter> + <Counter worker="8">1959003</Counter> + <Counter worker="9">1959004</Counter> + <Counter worker="10">1784452</Counter> + <Counter worker="11">1784439</Counter> + <Counter worker="12">1959383</Counter> + <Counter worker="13">1959358</Counter> + <Counter worker="14">1959416</Counter> + <Counter worker="15">1959430</Counter> + <Counter worker="16">1959034</Counter> + <Counter worker="17">1959023</Counter> + <Counter worker="18">2854197</Counter> + </EnterExit> + <EnterExit activeWorker="20"> + <Counter worker="0">1866629</Counter> + <Counter worker="1">1876698</Counter> + <Counter worker="2">1874511</Counter> + <Counter worker="3">1874507</Counter> + <Counter worker="4">1874529</Counter> + <Counter worker="5">1874529</Counter> + <Counter worker="6">1874515</Counter> + <Counter worker="7">1874548</Counter> + <Counter worker="8">1873869</Counter> + <Counter worker="9">1873871</Counter> + <Counter worker="10">1874492</Counter> + <Counter worker="11">1874458</Counter> + <Counter worker="12">1874493</Counter> + <Counter worker="13">1874492</Counter> + <Counter worker="14">1874484</Counter> + <Counter worker="15">1874498</Counter> + <Counter worker="16">1873903</Counter> + <Counter worker="17">1873915</Counter> + <Counter worker="18">1874511</Counter> + <Counter worker="19">1874526</Counter> + </EnterExit> + <EnterExit activeWorker="21"> + <Counter worker="0">1740567</Counter> + <Counter worker="1">1750409</Counter> + <Counter worker="2">1747962</Counter> + <Counter worker="3">1747980</Counter> + <Counter worker="4">1627929</Counter> + <Counter worker="5">1627933</Counter> + <Counter worker="6">1747970</Counter> + <Counter worker="7">1747982</Counter> + <Counter worker="8">1747540</Counter> + <Counter worker="9">1747537</Counter> + <Counter worker="10">1747916</Counter> + <Counter worker="11">1747949</Counter> + <Counter worker="12">1627885</Counter> + <Counter worker="13">1627903</Counter> + <Counter worker="14">1747966</Counter> + <Counter worker="15">1747910</Counter> + <Counter worker="16">1747575</Counter> + <Counter worker="17">1747584</Counter> + <Counter worker="18">1747963</Counter> + <Counter worker="19">1747992</Counter> + <Counter worker="20">2650677</Counter> + </EnterExit> + <EnterExit activeWorker="22"> + <Counter worker="0">1695213</Counter> + <Counter worker="1">1705070</Counter> + <Counter worker="2">1702542</Counter> + <Counter worker="3">1702552</Counter> + <Counter worker="4">1702539</Counter> + <Counter worker="5">1702528</Counter> + <Counter worker="6">1702526</Counter> + <Counter worker="7">1702547</Counter> + <Counter worker="8">1702150</Counter> + <Counter worker="9">1702162</Counter> + <Counter worker="10">1702490</Counter> + <Counter worker="11">1702507</Counter> + <Counter worker="12">1702486</Counter> + <Counter worker="13">1702505</Counter> + <Counter worker="14">1702506</Counter> + <Counter worker="15">1702486</Counter> + <Counter worker="16">1702210</Counter> + <Counter worker="17">1702202</Counter> + <Counter worker="18">1702536</Counter> + <Counter worker="19">1702543</Counter> + <Counter worker="20">1702549</Counter> + <Counter worker="21">1702519</Counter> + </EnterExit> + <EnterExit activeWorker="23"> + <Counter worker="0">1591896</Counter> + <Counter worker="1">1601705</Counter> + <Counter worker="2">1599175</Counter> + <Counter worker="3">1599169</Counter> + <Counter worker="4">1599143</Counter> + <Counter worker="5">1599178</Counter> + <Counter worker="6">1494516</Counter> + <Counter worker="7">1494558</Counter> + <Counter worker="8">1598772</Counter> + <Counter worker="9">1598790</Counter> + <Counter worker="10">1599109</Counter> + <Counter worker="11">1599125</Counter> + <Counter worker="12">1599120</Counter> + <Counter worker="13">1599114</Counter> + <Counter worker="14">1494495</Counter> + <Counter worker="15">1494476</Counter> + <Counter worker="16">1598826</Counter> + <Counter worker="17">1598824</Counter> + <Counter worker="18">1599147</Counter> + <Counter worker="19">1599177</Counter> + <Counter worker="20">1599154</Counter> + <Counter worker="21">1599165</Counter> + <Counter worker="22">2410141</Counter> + </EnterExit> + <EnterExit activeWorker="24"> + <Counter worker="0">1542824</Counter> + <Counter worker="1">1552783</Counter> + <Counter worker="2">1550219</Counter> + <Counter worker="3">1550178</Counter> + <Counter worker="4">1550192</Counter> + <Counter worker="5">1550202</Counter> + <Counter worker="6">1550188</Counter> + <Counter worker="7">1550186</Counter> + <Counter worker="8">1549818</Counter> + <Counter worker="9">1549833</Counter> + <Counter worker="10">1550142</Counter> + <Counter worker="11">1550191</Counter> + <Counter worker="12">1550164</Counter> + <Counter worker="13">1550176</Counter> + <Counter worker="14">1550141</Counter> + <Counter worker="15">1550141</Counter> + <Counter worker="16">1549864</Counter> + <Counter worker="17">1549870</Counter> + <Counter worker="18">1550195</Counter> + <Counter worker="19">1550207</Counter> + <Counter worker="20">1550195</Counter> + <Counter worker="21">1550202</Counter> + <Counter worker="22">1548373</Counter> + <Counter worker="23">1550453</Counter> + </EnterExit> + <EnterListOpExit activeWorker="1"> + <Counter worker="0">4602414</Counter> + <Removals worker="0">100</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="2"> + <Counter worker="0">2363962</Counter> + <Counter worker="1">2360418</Counter> + <Removals worker="0">38</Removals> + <Removals worker="1">38</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="3"> + <Counter worker="0">1754350</Counter> + <Counter worker="1">1756759</Counter> + <Counter worker="2">2481981</Counter> + <Removals worker="0">12</Removals> + <Removals worker="1">12</Removals> + <Removals worker="2">11</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="4"> + <Counter worker="0">1414555</Counter> + <Counter worker="1">1413264</Counter> + <Counter worker="2">1414596</Counter> + <Counter worker="3">1413456</Counter> + <Removals worker="0">11</Removals> + <Removals worker="1">11</Removals> + <Removals worker="2">11</Removals> + <Removals worker="3">10</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="5"> + <Counter worker="0">1170602</Counter> + <Counter worker="1">1170851</Counter> + <Counter worker="2">1170701</Counter> + <Counter worker="3">1170945</Counter> + <Counter worker="4">1653757</Counter> + <Removals worker="0">10</Removals> + <Removals worker="1">10</Removals> + <Removals worker="2">10</Removals> + <Removals worker="3">10</Removals> + <Removals worker="4">10</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="6"> + <Counter worker="0">1010633</Counter> + <Counter worker="1">1012037</Counter> + <Counter worker="2">1011637</Counter> + <Counter worker="3">1011674</Counter> + <Counter worker="4">1011938</Counter> + <Counter worker="5">1010872</Counter> + <Removals worker="0">9</Removals> + <Removals worker="1">9</Removals> + <Removals worker="2">8</Removals> + <Removals worker="3">8</Removals> + <Removals worker="4">8</Removals> + <Removals worker="5">8</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="7"> + <Counter worker="0">856667</Counter> + <Counter worker="1">855812</Counter> + <Counter worker="2">856461</Counter> + <Counter worker="3">856526</Counter> + <Counter worker="4">856782</Counter> + <Counter worker="5">855850</Counter> + <Counter worker="6">1223300</Counter> + <Removals worker="0">8</Removals> + <Removals worker="1">7</Removals> + <Removals worker="2">7</Removals> + <Removals worker="3">7</Removals> + <Removals worker="4">7</Removals> + <Removals worker="5">7</Removals> + <Removals worker="6">7</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="8"> + <Counter worker="0">789251</Counter> + <Counter worker="1">789410</Counter> + <Counter worker="2">789370</Counter> + <Counter worker="3">789404</Counter> + <Counter worker="4">788991</Counter> + <Counter worker="5">789003</Counter> + <Counter worker="6">789373</Counter> + <Counter worker="7">789372</Counter> + <Removals worker="0">7</Removals> + <Removals worker="1">7</Removals> + <Removals worker="2">6</Removals> + <Removals worker="3">6</Removals> + <Removals worker="4">6</Removals> + <Removals worker="5">6</Removals> + <Removals worker="6">6</Removals> + <Removals worker="7">6</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="9"> + <Counter worker="0">646736</Counter> + <Counter worker="1">645999</Counter> + <Counter worker="2">646562</Counter> + <Counter worker="3">646606</Counter> + <Counter worker="4">646584</Counter> + <Counter worker="5">646613</Counter> + <Counter worker="6">646597</Counter> + <Counter worker="7">646629</Counter> + <Counter worker="8">991844</Counter> + <Removals worker="0">6</Removals> + <Removals worker="1">6</Removals> + <Removals worker="2">6</Removals> + <Removals worker="3">6</Removals> + <Removals worker="4">6</Removals> + <Removals worker="5">5</Removals> + <Removals worker="6">5</Removals> + <Removals worker="7">5</Removals> + <Removals worker="8">5</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="10"> + <Counter worker="0">626763</Counter> + <Counter worker="1">626902</Counter> + <Counter worker="2">626340</Counter> + <Counter worker="3">627165</Counter> + <Counter worker="4">626860</Counter> + <Counter worker="5">626895</Counter> + <Counter worker="6">627074</Counter> + <Counter worker="7">626257</Counter> + <Counter worker="8">626811</Counter> + <Counter worker="9">626856</Counter> + <Removals worker="0">5</Removals> + <Removals worker="1">5</Removals> + <Removals worker="2">5</Removals> + <Removals worker="3">5</Removals> + <Removals worker="4">5</Removals> + <Removals worker="5">5</Removals> + <Removals worker="6">5</Removals> + <Removals worker="7">5</Removals> + <Removals worker="8">5</Removals> + <Removals worker="9">5</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="11"> + <Counter worker="0">513748</Counter> + <Counter worker="1">513853</Counter> + <Counter worker="2">513844</Counter> + <Counter worker="3">513845</Counter> + <Counter worker="4">513381</Counter> + <Counter worker="5">514111</Counter> + <Counter worker="6">514100</Counter> + <Counter worker="7">513416</Counter> + <Counter worker="8">513814</Counter> + <Counter worker="9">513832</Counter> + <Counter worker="10">822053</Counter> + <Removals worker="0">5</Removals> + <Removals worker="1">5</Removals> + <Removals worker="2">5</Removals> + <Removals worker="3">5</Removals> + <Removals worker="4">5</Removals> + <Removals worker="5">5</Removals> + <Removals worker="6">4</Removals> + <Removals worker="7">4</Removals> + <Removals worker="8">4</Removals> + <Removals worker="9">4</Removals> + <Removals worker="10">4</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="12"> + <Counter worker="0">479507</Counter> + <Counter worker="1">479633</Counter> + <Counter worker="2">479796</Counter> + <Counter worker="3">479790</Counter> + <Counter worker="4">479797</Counter> + <Counter worker="5">479776</Counter> + <Counter worker="6">479782</Counter> + <Counter worker="7">479792</Counter> + <Counter worker="8">479752</Counter> + <Counter worker="9">479775</Counter> + <Counter worker="10">479763</Counter> + <Counter worker="11">479765</Counter> + <Removals worker="0">5</Removals> + <Removals worker="1">5</Removals> + <Removals worker="2">4</Removals> + <Removals worker="3">4</Removals> + <Removals worker="4">4</Removals> + <Removals worker="5">4</Removals> + <Removals worker="6">4</Removals> + <Removals worker="7">4</Removals> + <Removals worker="8">4</Removals> + <Removals worker="9">4</Removals> + <Removals worker="10">4</Removals> + <Removals worker="11">4</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="13"> + <Counter worker="0">388408</Counter> + <Counter worker="1">388492</Counter> + <Counter worker="2">388490</Counter> + <Counter worker="3">388490</Counter> + <Counter worker="4">388480</Counter> + <Counter worker="5">388494</Counter> + <Counter worker="6">388985</Counter> + <Counter worker="7">387693</Counter> + <Counter worker="8">388472</Counter> + <Counter worker="9">388472</Counter> + <Counter worker="10">388473</Counter> + <Counter worker="11">388513</Counter> + <Counter worker="12">647167</Counter> + <Removals worker="0">4</Removals> + <Removals worker="1">4</Removals> + <Removals worker="2">4</Removals> + <Removals worker="3">4</Removals> + <Removals worker="4">4</Removals> + <Removals worker="5">4</Removals> + <Removals worker="6">4</Removals> + <Removals worker="7">4</Removals> + <Removals worker="8">4</Removals> + <Removals worker="9">4</Removals> + <Removals worker="10">4</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="14"> + <Counter worker="0">356221</Counter> + <Counter worker="1">356334</Counter> + <Counter worker="2">355962</Counter> + <Counter worker="3">356556</Counter> + <Counter worker="4">356313</Counter> + <Counter worker="5">356315</Counter> + <Counter worker="6">356310</Counter> + <Counter worker="7">356331</Counter> + <Counter worker="8">356306</Counter> + <Counter worker="9">356325</Counter> + <Counter worker="10">356303</Counter> + <Counter worker="11">356321</Counter> + <Counter worker="12">356510</Counter> + <Counter worker="13">355868</Counter> + <Removals worker="0">4</Removals> + <Removals worker="1">4</Removals> + <Removals worker="2">4</Removals> + <Removals worker="3">4</Removals> + <Removals worker="4">4</Removals> + <Removals worker="5">4</Removals> + <Removals worker="6">4</Removals> + <Removals worker="7">4</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + <Removals worker="13">3</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="15"> + <Counter worker="0">297570</Counter> + <Counter worker="1">297659</Counter> + <Counter worker="2">297645</Counter> + <Counter worker="3">297646</Counter> + <Counter worker="4">297647</Counter> + <Counter worker="5">297665</Counter> + <Counter worker="6">297252</Counter> + <Counter worker="7">297821</Counter> + <Counter worker="8">297642</Counter> + <Counter worker="9">297652</Counter> + <Counter worker="10">297850</Counter> + <Counter worker="11">297316</Counter> + <Counter worker="12">297641</Counter> + <Counter worker="13">297669</Counter> + <Counter worker="14">509694</Counter> + <Removals worker="0">4</Removals> + <Removals worker="1">4</Removals> + <Removals worker="2">4</Removals> + <Removals worker="3">4</Removals> + <Removals worker="4">4</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + <Removals worker="13">3</Removals> + <Removals worker="14">3</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="16"> + <Counter worker="0">273646</Counter> + <Counter worker="1">273767</Counter> + <Counter worker="2">273746</Counter> + <Counter worker="3">273751</Counter> + <Counter worker="4">273734</Counter> + <Counter worker="5">273752</Counter> + <Counter worker="6">273440</Counter> + <Counter worker="7">273957</Counter> + <Counter worker="8">273729</Counter> + <Counter worker="9">273743</Counter> + <Counter worker="10">273743</Counter> + <Counter worker="11">273740</Counter> + <Counter worker="12">273742</Counter> + <Counter worker="13">273741</Counter> + <Counter worker="14">273904</Counter> + <Counter worker="15">273362</Counter> + <Removals worker="0">4</Removals> + <Removals worker="1">4</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + <Removals worker="13">3</Removals> + <Removals worker="14">3</Removals> + <Removals worker="15">3</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="17"> + <Counter worker="0">232885</Counter> + <Counter worker="1">232443</Counter> + <Counter worker="2">232788</Counter> + <Counter worker="3">232794</Counter> + <Counter worker="4">232786</Counter> + <Counter worker="5">232795</Counter> + <Counter worker="6">232785</Counter> + <Counter worker="7">232792</Counter> + <Counter worker="8">232938</Counter> + <Counter worker="9">232423</Counter> + <Counter worker="10">232786</Counter> + <Counter worker="11">232784</Counter> + <Counter worker="12">232784</Counter> + <Counter worker="13">232788</Counter> + <Counter worker="14">232776</Counter> + <Counter worker="15">232805</Counter> + <Counter worker="16">407811</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + <Removals worker="13">3</Removals> + <Removals worker="14">3</Removals> + <Removals worker="15">3</Removals> + <Removals worker="16">2</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="18"> + <Counter worker="0">219185</Counter> + <Counter worker="1">218792</Counter> + <Counter worker="2">219052</Counter> + <Counter worker="3">219051</Counter> + <Counter worker="4">219049</Counter> + <Counter worker="5">219050</Counter> + <Counter worker="6">219049</Counter> + <Counter worker="7">219052</Counter> + <Counter worker="8">219206</Counter> + <Counter worker="9">218704</Counter> + <Counter worker="10">219041</Counter> + <Counter worker="11">219055</Counter> + <Counter worker="12">219041</Counter> + <Counter worker="13">219061</Counter> + <Counter worker="14">219057</Counter> + <Counter worker="15">219044</Counter> + <Counter worker="16">219042</Counter> + <Counter worker="17">219048</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + <Removals worker="13">3</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="19"> + <Counter worker="0">197527</Counter> + <Counter worker="1">198092</Counter> + <Counter worker="2">158895</Counter> + <Counter worker="3">158890</Counter> + <Counter worker="4">197869</Counter> + <Counter worker="5">197874</Counter> + <Counter worker="6">198124</Counter> + <Counter worker="7">198132</Counter> + <Counter worker="8">197900</Counter> + <Counter worker="9">197918</Counter> + <Counter worker="10">158882</Counter> + <Counter worker="11">158901</Counter> + <Counter worker="12">198074</Counter> + <Counter worker="13">197615</Counter> + <Counter worker="14">198135</Counter> + <Counter worker="15">198135</Counter> + <Counter worker="16">197911</Counter> + <Counter worker="17">197923</Counter> + <Counter worker="18">307966</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="20"> + <Counter worker="0">176815</Counter> + <Counter worker="1">176895</Counter> + <Counter worker="2">176880</Counter> + <Counter worker="3">176877</Counter> + <Counter worker="4">176855</Counter> + <Counter worker="5">176854</Counter> + <Counter worker="6">177056</Counter> + <Counter worker="7">176612</Counter> + <Counter worker="8">176863</Counter> + <Counter worker="9">176880</Counter> + <Counter worker="10">176882</Counter> + <Counter worker="11">176880</Counter> + <Counter worker="12">176570</Counter> + <Counter worker="13">177022</Counter> + <Counter worker="14">176848</Counter> + <Counter worker="15">176856</Counter> + <Counter worker="16">176878</Counter> + <Counter worker="17">176882</Counter> + <Counter worker="18">176885</Counter> + <Counter worker="19">176878</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">2</Removals> + <Removals worker="11">2</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + <Removals worker="19">2</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="21"> + <Counter worker="0">154576</Counter> + <Counter worker="1">155081</Counter> + <Counter worker="2">155108</Counter> + <Counter worker="3">154685</Counter> + <Counter worker="4">153720</Counter> + <Counter worker="5">153702</Counter> + <Counter worker="6">154913</Counter> + <Counter worker="7">154922</Counter> + <Counter worker="8">154909</Counter> + <Counter worker="9">154897</Counter> + <Counter worker="10">154907</Counter> + <Counter worker="11">154909</Counter> + <Counter worker="12">153714</Counter> + <Counter worker="13">153712</Counter> + <Counter worker="14">154913</Counter> + <Counter worker="15">154922</Counter> + <Counter worker="16">154907</Counter> + <Counter worker="17">154915</Counter> + <Counter worker="18">154916</Counter> + <Counter worker="19">154905</Counter> + <Counter worker="20">300604</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">2</Removals> + <Removals worker="9">2</Removals> + <Removals worker="10">2</Removals> + <Removals worker="11">2</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + <Removals worker="19">2</Removals> + <Removals worker="20">2</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="22"> + <Counter worker="0">147956</Counter> + <Counter worker="1">148026</Counter> + <Counter worker="2">148009</Counter> + <Counter worker="3">148015</Counter> + <Counter worker="4">148011</Counter> + <Counter worker="5">148013</Counter> + <Counter worker="6">148031</Counter> + <Counter worker="7">148016</Counter> + <Counter worker="8">148008</Counter> + <Counter worker="9">148015</Counter> + <Counter worker="10">148016</Counter> + <Counter worker="11">148018</Counter> + <Counter worker="12">148013</Counter> + <Counter worker="13">148016</Counter> + <Counter worker="14">148019</Counter> + <Counter worker="15">148019</Counter> + <Counter worker="16">148170</Counter> + <Counter worker="17">147750</Counter> + <Counter worker="18">148023</Counter> + <Counter worker="19">148021</Counter> + <Counter worker="20">147810</Counter> + <Counter worker="21">148209</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">2</Removals> + <Removals worker="7">2</Removals> + <Removals worker="8">2</Removals> + <Removals worker="9">2</Removals> + <Removals worker="10">2</Removals> + <Removals worker="11">2</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + <Removals worker="19">2</Removals> + <Removals worker="20">2</Removals> + <Removals worker="21">2</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="23"> + <Counter worker="0">129551</Counter> + <Counter worker="1">129617</Counter> + <Counter worker="2">129599</Counter> + <Counter worker="3">129612</Counter> + <Counter worker="4">129613</Counter> + <Counter worker="5">129605</Counter> + <Counter worker="6">128731</Counter> + <Counter worker="7">128725</Counter> + <Counter worker="8">129601</Counter> + <Counter worker="9">129605</Counter> + <Counter worker="10">129358</Counter> + <Counter worker="11">129751</Counter> + <Counter worker="12">129408</Counter> + <Counter worker="13">129789</Counter> + <Counter worker="14">128723</Counter> + <Counter worker="15">128724</Counter> + <Counter worker="16">129606</Counter> + <Counter worker="17">129614</Counter> + <Counter worker="18">129610</Counter> + <Counter worker="19">129613</Counter> + <Counter worker="20">129611</Counter> + <Counter worker="21">129610</Counter> + <Counter worker="22">252076</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">2</Removals> + <Removals worker="5">2</Removals> + <Removals worker="6">2</Removals> + <Removals worker="7">2</Removals> + <Removals worker="8">2</Removals> + <Removals worker="9">2</Removals> + <Removals worker="10">2</Removals> + <Removals worker="11">2</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + <Removals worker="19">2</Removals> + <Removals worker="20">2</Removals> + <Removals worker="21">2</Removals> + <Removals worker="22">2</Removals> + </EnterListOpExit> + <EnterListOpExit activeWorker="24"> + <Counter worker="0">123985</Counter> + <Counter worker="1">124060</Counter> + <Counter worker="2">123992</Counter> + <Counter worker="3">123979</Counter> + <Counter worker="4">124046</Counter> + <Counter worker="5">124041</Counter> + <Counter worker="6">124049</Counter> + <Counter worker="7">124034</Counter> + <Counter worker="8">124034</Counter> + <Counter worker="9">124040</Counter> + <Counter worker="10">124039</Counter> + <Counter worker="11">124035</Counter> + <Counter worker="12">124037</Counter> + <Counter worker="13">124041</Counter> + <Counter worker="14">124039</Counter> + <Counter worker="15">124038</Counter> + <Counter worker="16">124042</Counter> + <Counter worker="17">124044</Counter> + <Counter worker="18">124046</Counter> + <Counter worker="19">124045</Counter> + <Counter worker="20">124050</Counter> + <Counter worker="21">124044</Counter> + <Counter worker="22">123895</Counter> + <Counter worker="23">124094</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">2</Removals> + <Removals worker="3">2</Removals> + <Removals worker="4">2</Removals> + <Removals worker="5">2</Removals> + <Removals worker="6">2</Removals> + <Removals worker="7">2</Removals> + <Removals worker="8">2</Removals> + <Removals worker="9">2</Removals> + <Removals worker="10">2</Removals> + <Removals worker="11">2</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + <Removals worker="19">2</Removals> + <Removals worker="20">2</Removals> + <Removals worker="21">2</Removals> + <Removals worker="22">2</Removals> + <Removals worker="23">2</Removals> + </EnterListOpExit> + <EnterExitPreempt activeWorker="1"> + <Counter worker="0">3254304</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="2"> + <Counter worker="0">3230085</Counter> + <Counter worker="1">3236178</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="3"> + <Counter worker="0">3211428</Counter> + <Counter worker="1">3217655</Counter> + <Counter worker="2">3218102</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="4"> + <Counter worker="0">3137290</Counter> + <Counter worker="1">3143467</Counter> + <Counter worker="2">3143784</Counter> + <Counter worker="3">3143780</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="5"> + <Counter worker="0">3121319</Counter> + <Counter worker="1">3127640</Counter> + <Counter worker="2">3127958</Counter> + <Counter worker="3">3127959</Counter> + <Counter worker="4">3128057</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="6"> + <Counter worker="0">3103155</Counter> + <Counter worker="1">3109433</Counter> + <Counter worker="2">3109748</Counter> + <Counter worker="3">3109767</Counter> + <Counter worker="4">3109757</Counter> + <Counter worker="5">3109759</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="7"> + <Counter worker="0">3086415</Counter> + <Counter worker="1">3092876</Counter> + <Counter worker="2">3093221</Counter> + <Counter worker="3">3093213</Counter> + <Counter worker="4">3093229</Counter> + <Counter worker="5">3093185</Counter> + <Counter worker="6">3093274</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="8"> + <Counter worker="0">3071553</Counter> + <Counter worker="1">3077980</Counter> + <Counter worker="2">3078324</Counter> + <Counter worker="3">3078349</Counter> + <Counter worker="4">3078325</Counter> + <Counter worker="5">3078323</Counter> + <Counter worker="6">3078319</Counter> + <Counter worker="7">3078334</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="9"> + <Counter worker="0">3118587</Counter> + <Counter worker="1">3125168</Counter> + <Counter worker="2">3125567</Counter> + <Counter worker="3">3125553</Counter> + <Counter worker="4">3125549</Counter> + <Counter worker="5">3125570</Counter> + <Counter worker="6">3125575</Counter> + <Counter worker="7">3125543</Counter> + <Counter worker="8">3125601</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="10"> + <Counter worker="0">3097251</Counter> + <Counter worker="1">3103660</Counter> + <Counter worker="2">3104036</Counter> + <Counter worker="3">3104018</Counter> + <Counter worker="4">3104034</Counter> + <Counter worker="5">3104018</Counter> + <Counter worker="6">3104026</Counter> + <Counter worker="7">3104039</Counter> + <Counter worker="8">3103976</Counter> + <Counter worker="9">3103973</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="11"> + <Counter worker="0">3009773</Counter> + <Counter worker="1">3016278</Counter> + <Counter worker="2">3016622</Counter> + <Counter worker="3">3016633</Counter> + <Counter worker="4">3016620</Counter> + <Counter worker="5">3016618</Counter> + <Counter worker="6">3016613</Counter> + <Counter worker="7">3016611</Counter> + <Counter worker="8">3016571</Counter> + <Counter worker="9">3016566</Counter> + <Counter worker="10">3016697</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="12"> + <Counter worker="0">3012166</Counter> + <Counter worker="1">3018631</Counter> + <Counter worker="2">3018994</Counter> + <Counter worker="3">3018969</Counter> + <Counter worker="4">3018981</Counter> + <Counter worker="5">3018971</Counter> + <Counter worker="6">3018989</Counter> + <Counter worker="7">3018985</Counter> + <Counter worker="8">3018945</Counter> + <Counter worker="9">3018931</Counter> + <Counter worker="10">3018945</Counter> + <Counter worker="11">3018928</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="13"> + <Counter worker="0">2769364</Counter> + <Counter worker="1">2775917</Counter> + <Counter worker="2">2776139</Counter> + <Counter worker="3">2776123</Counter> + <Counter worker="4">2776138</Counter> + <Counter worker="5">2776129</Counter> + <Counter worker="6">2776122</Counter> + <Counter worker="7">2776139</Counter> + <Counter worker="8">2776078</Counter> + <Counter worker="9">2776100</Counter> + <Counter worker="10">2776089</Counter> + <Counter worker="11">2776083</Counter> + <Counter worker="12">3007128</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="14"> + <Counter worker="0">2623497</Counter> + <Counter worker="1">2630018</Counter> + <Counter worker="2">2630058</Counter> + <Counter worker="3">2630062</Counter> + <Counter worker="4">2630066</Counter> + <Counter worker="5">2630072</Counter> + <Counter worker="6">2630068</Counter> + <Counter worker="7">2630078</Counter> + <Counter worker="8">2630041</Counter> + <Counter worker="9">2630033</Counter> + <Counter worker="10">2630043</Counter> + <Counter worker="11">2630043</Counter> + <Counter worker="12">2630030</Counter> + <Counter worker="13">2630038</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="15"> + <Counter worker="0">2434866</Counter> + <Counter worker="1">2441461</Counter> + <Counter worker="2">2441341</Counter> + <Counter worker="3">2441313</Counter> + <Counter worker="4">2441338</Counter> + <Counter worker="5">2441343</Counter> + <Counter worker="6">2441343</Counter> + <Counter worker="7">2441332</Counter> + <Counter worker="8">2441314</Counter> + <Counter worker="9">2441312</Counter> + <Counter worker="10">2441299</Counter> + <Counter worker="11">2441306</Counter> + <Counter worker="12">2441313</Counter> + <Counter worker="13">2441302</Counter> + <Counter worker="14">2789683</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="16"> + <Counter worker="0">2298098</Counter> + <Counter worker="1">2304721</Counter> + <Counter worker="2">2304400</Counter> + <Counter worker="3">2304378</Counter> + <Counter worker="4">2304392</Counter> + <Counter worker="5">2304385</Counter> + <Counter worker="6">2304386</Counter> + <Counter worker="7">2304387</Counter> + <Counter worker="8">2304344</Counter> + <Counter worker="9">2304362</Counter> + <Counter worker="10">2304344</Counter> + <Counter worker="11">2304327</Counter> + <Counter worker="12">2304362</Counter> + <Counter worker="13">2304342</Counter> + <Counter worker="14">2304362</Counter> + <Counter worker="15">2304326</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="17"> + <Counter worker="0">2147614</Counter> + <Counter worker="1">2154193</Counter> + <Counter worker="2">2153754</Counter> + <Counter worker="3">2153721</Counter> + <Counter worker="4">2153738</Counter> + <Counter worker="5">2153745</Counter> + <Counter worker="6">2153730</Counter> + <Counter worker="7">2153753</Counter> + <Counter worker="8">2153699</Counter> + <Counter worker="9">2153705</Counter> + <Counter worker="10">2153707</Counter> + <Counter worker="11">2153685</Counter> + <Counter worker="12">2153725</Counter> + <Counter worker="13">2153696</Counter> + <Counter worker="14">2153693</Counter> + <Counter worker="15">2153714</Counter> + <Counter worker="16">2629739</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="18"> + <Counter worker="0">2052413</Counter> + <Counter worker="1">2058999</Counter> + <Counter worker="2">2058481</Counter> + <Counter worker="3">2058454</Counter> + <Counter worker="4">2058478</Counter> + <Counter worker="5">2058472</Counter> + <Counter worker="6">2058462</Counter> + <Counter worker="7">2058474</Counter> + <Counter worker="8">2058443</Counter> + <Counter worker="9">2058433</Counter> + <Counter worker="10">2058425</Counter> + <Counter worker="11">2058426</Counter> + <Counter worker="12">2058420</Counter> + <Counter worker="13">2058425</Counter> + <Counter worker="14">2058422</Counter> + <Counter worker="15">2058417</Counter> + <Counter worker="16">2058471</Counter> + <Counter worker="17">2058464</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="19"> + <Counter worker="0">1914695</Counter> + <Counter worker="1">1921298</Counter> + <Counter worker="2">1920678</Counter> + <Counter worker="3">1920660</Counter> + <Counter worker="4">1920673</Counter> + <Counter worker="5">1920655</Counter> + <Counter worker="6">1920651</Counter> + <Counter worker="7">1920669</Counter> + <Counter worker="8">1920641</Counter> + <Counter worker="9">1920636</Counter> + <Counter worker="10">1920620</Counter> + <Counter worker="11">1920633</Counter> + <Counter worker="12">1920637</Counter> + <Counter worker="13">1920643</Counter> + <Counter worker="14">1920642</Counter> + <Counter worker="15">1920619</Counter> + <Counter worker="16">1920662</Counter> + <Counter worker="17">1920662</Counter> + <Counter worker="18">2400814</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="20"> + <Counter worker="0">1853771</Counter> + <Counter worker="1">1860358</Counter> + <Counter worker="2">1859645</Counter> + <Counter worker="3">1859629</Counter> + <Counter worker="4">1859640</Counter> + <Counter worker="5">1859661</Counter> + <Counter worker="6">1859636</Counter> + <Counter worker="7">1859635</Counter> + <Counter worker="8">1859605</Counter> + <Counter worker="9">1859616</Counter> + <Counter worker="10">1859606</Counter> + <Counter worker="11">1859600</Counter> + <Counter worker="12">1859605</Counter> + <Counter worker="13">1859597</Counter> + <Counter worker="14">1859608</Counter> + <Counter worker="15">1859591</Counter> + <Counter worker="16">1859649</Counter> + <Counter worker="17">1859655</Counter> + <Counter worker="18">1859650</Counter> + <Counter worker="19">1859637</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="21"> + <Counter worker="0">1770522</Counter> + <Counter worker="1">1777082</Counter> + <Counter worker="2">1776390</Counter> + <Counter worker="3">1776350</Counter> + <Counter worker="4">1604585</Counter> + <Counter worker="5">1604578</Counter> + <Counter worker="6">1776398</Counter> + <Counter worker="7">1776385</Counter> + <Counter worker="8">1776294</Counter> + <Counter worker="9">1776271</Counter> + <Counter worker="10">1776340</Counter> + <Counter worker="11">1776318</Counter> + <Counter worker="12">1604553</Counter> + <Counter worker="13">1604546</Counter> + <Counter worker="14">1776369</Counter> + <Counter worker="15">1776347</Counter> + <Counter worker="16">1776327</Counter> + <Counter worker="17">1776319</Counter> + <Counter worker="18">1776372</Counter> + <Counter worker="19">1776370</Counter> + <Counter worker="20">2138618</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="22"> + <Counter worker="0">1688290</Counter> + <Counter worker="1">1694844</Counter> + <Counter worker="2">1694326</Counter> + <Counter worker="3">1694309</Counter> + <Counter worker="4">1694320</Counter> + <Counter worker="5">1694311</Counter> + <Counter worker="6">1694315</Counter> + <Counter worker="7">1694320</Counter> + <Counter worker="8">1693870</Counter> + <Counter worker="9">1693878</Counter> + <Counter worker="10">1694261</Counter> + <Counter worker="11">1694262</Counter> + <Counter worker="12">1694278</Counter> + <Counter worker="13">1694250</Counter> + <Counter worker="14">1694280</Counter> + <Counter worker="15">1694266</Counter> + <Counter worker="16">1693923</Counter> + <Counter worker="17">1693910</Counter> + <Counter worker="18">1694306</Counter> + <Counter worker="19">1694317</Counter> + <Counter worker="20">1694317</Counter> + <Counter worker="21">1694320</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="23"> + <Counter worker="0">1622418</Counter> + <Counter worker="1">1628964</Counter> + <Counter worker="2">1628407</Counter> + <Counter worker="3">1628383</Counter> + <Counter worker="4">1628403</Counter> + <Counter worker="5">1628399</Counter> + <Counter worker="6">1465626</Counter> + <Counter worker="7">1465635</Counter> + <Counter worker="8">1627950</Counter> + <Counter worker="9">1627955</Counter> + <Counter worker="10">1628362</Counter> + <Counter worker="11">1628357</Counter> + <Counter worker="12">1628380</Counter> + <Counter worker="13">1628365</Counter> + <Counter worker="14">1465617</Counter> + <Counter worker="15">1465586</Counter> + <Counter worker="16">1627992</Counter> + <Counter worker="17">1627979</Counter> + <Counter worker="18">1628385</Counter> + <Counter worker="19">1628387</Counter> + <Counter worker="20">1628395</Counter> + <Counter worker="21">1628404</Counter> + <Counter worker="22">1953187</Counter> + </EnterExitPreempt> + <EnterExitPreempt activeWorker="24"> + <Counter worker="0">1547993</Counter> + <Counter worker="1">1554439</Counter> + <Counter worker="2">1553873</Counter> + <Counter worker="3">1553847</Counter> + <Counter worker="4">1553859</Counter> + <Counter worker="5">1553837</Counter> + <Counter worker="6">1553795</Counter> + <Counter worker="7">1553795</Counter> + <Counter worker="8">1553385</Counter> + <Counter worker="9">1553384</Counter> + <Counter worker="10">1553811</Counter> + <Counter worker="11">1553799</Counter> + <Counter worker="12">1553813</Counter> + <Counter worker="13">1553824</Counter> + <Counter worker="14">1553780</Counter> + <Counter worker="15">1553757</Counter> + <Counter worker="16">1553429</Counter> + <Counter worker="17">1553428</Counter> + <Counter worker="18">1553837</Counter> + <Counter worker="19">1553863</Counter> + <Counter worker="20">1553847</Counter> + <Counter worker="21">1553849</Counter> + <Counter worker="22">1552296</Counter> + <Counter worker="23">1553928</Counter> + </EnterExitPreempt> + <EnterListOpExitPreempt activeWorker="1"> + <Counter worker="0">3245559</Counter> + <Removals worker="0">59</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="2"> + <Counter worker="0">2206622</Counter> + <Counter worker="1">2209597</Counter> + <Removals worker="0">22</Removals> + <Removals worker="1">21</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="3"> + <Counter worker="0">1649698</Counter> + <Counter worker="1">1652658</Counter> + <Counter worker="2">2031932</Counter> + <Removals worker="0">16</Removals> + <Removals worker="1">16</Removals> + <Removals worker="2">15</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="4"> + <Counter worker="0">1349747</Counter> + <Counter worker="1">1350236</Counter> + <Counter worker="2">1350671</Counter> + <Counter worker="3">1348893</Counter> + <Removals worker="0">13</Removals> + <Removals worker="1">13</Removals> + <Removals worker="2">12</Removals> + <Removals worker="3">12</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="5"> + <Counter worker="0">1115317</Counter> + <Counter worker="1">1115351</Counter> + <Counter worker="2">1115527</Counter> + <Counter worker="3">1114853</Counter> + <Counter worker="4">1454344</Counter> + <Removals worker="0">10</Removals> + <Removals worker="1">10</Removals> + <Removals worker="2">10</Removals> + <Removals worker="3">10</Removals> + <Removals worker="4">10</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="6"> + <Counter worker="0">968405</Counter> + <Counter worker="1">968578</Counter> + <Counter worker="2">968652</Counter> + <Counter worker="3">968274</Counter> + <Counter worker="4">969229</Counter> + <Counter worker="5">966044</Counter> + <Removals worker="0">9</Removals> + <Removals worker="1">9</Removals> + <Removals worker="2">8</Removals> + <Removals worker="3">8</Removals> + <Removals worker="4">8</Removals> + <Removals worker="5">8</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="7"> + <Counter worker="0">828360</Counter> + <Counter worker="1">829352</Counter> + <Counter worker="2">829124</Counter> + <Counter worker="3">828959</Counter> + <Counter worker="4">828988</Counter> + <Counter worker="5">828579</Counter> + <Counter worker="6">1108607</Counter> + <Removals worker="0">8</Removals> + <Removals worker="1">7</Removals> + <Removals worker="2">7</Removals> + <Removals worker="3">7</Removals> + <Removals worker="4">7</Removals> + <Removals worker="5">7</Removals> + <Removals worker="6">7</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="8"> + <Counter worker="0">753109</Counter> + <Counter worker="1">753288</Counter> + <Counter worker="2">753649</Counter> + <Counter worker="3">753545</Counter> + <Counter worker="4">753699</Counter> + <Counter worker="5">753247</Counter> + <Counter worker="6">753597</Counter> + <Counter worker="7">752832</Counter> + <Removals worker="0">7</Removals> + <Removals worker="1">7</Removals> + <Removals worker="2">6</Removals> + <Removals worker="3">6</Removals> + <Removals worker="4">6</Removals> + <Removals worker="5">6</Removals> + <Removals worker="6">6</Removals> + <Removals worker="7">6</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="9"> + <Counter worker="0">642421</Counter> + <Counter worker="1">642491</Counter> + <Counter worker="2">642972</Counter> + <Counter worker="3">641575</Counter> + <Counter worker="4">642638</Counter> + <Counter worker="5">642537</Counter> + <Counter worker="6">642517</Counter> + <Counter worker="7">642455</Counter> + <Counter worker="8">908107</Counter> + <Removals worker="0">6</Removals> + <Removals worker="1">6</Removals> + <Removals worker="2">6</Removals> + <Removals worker="3">6</Removals> + <Removals worker="4">6</Removals> + <Removals worker="5">5</Removals> + <Removals worker="6">5</Removals> + <Removals worker="7">5</Removals> + <Removals worker="8">5</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="10"> + <Counter worker="0">601583</Counter> + <Counter worker="1">601726</Counter> + <Counter worker="2">601700</Counter> + <Counter worker="3">601691</Counter> + <Counter worker="4">601704</Counter> + <Counter worker="5">601660</Counter> + <Counter worker="6">601817</Counter> + <Counter worker="7">600992</Counter> + <Counter worker="8">601642</Counter> + <Counter worker="9">600148</Counter> + <Removals worker="0">5</Removals> + <Removals worker="1">5</Removals> + <Removals worker="2">5</Removals> + <Removals worker="3">5</Removals> + <Removals worker="4">5</Removals> + <Removals worker="5">5</Removals> + <Removals worker="6">5</Removals> + <Removals worker="7">5</Removals> + <Removals worker="8">5</Removals> + <Removals worker="9">5</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="11"> + <Counter worker="0">509029</Counter> + <Counter worker="1">509215</Counter> + <Counter worker="2">508785</Counter> + <Counter worker="3">509365</Counter> + <Counter worker="4">509373</Counter> + <Counter worker="5">508757</Counter> + <Counter worker="6">509223</Counter> + <Counter worker="7">509199</Counter> + <Counter worker="8">509142</Counter> + <Counter worker="9">508823</Counter> + <Counter worker="10">762921</Counter> + <Removals worker="0">5</Removals> + <Removals worker="1">5</Removals> + <Removals worker="2">5</Removals> + <Removals worker="3">5</Removals> + <Removals worker="4">5</Removals> + <Removals worker="5">5</Removals> + <Removals worker="6">4</Removals> + <Removals worker="7">4</Removals> + <Removals worker="8">4</Removals> + <Removals worker="9">4</Removals> + <Removals worker="10">4</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="12"> + <Counter worker="0">474520</Counter> + <Counter worker="1">474639</Counter> + <Counter worker="2">474620</Counter> + <Counter worker="3">474665</Counter> + <Counter worker="4">474652</Counter> + <Counter worker="5">474648</Counter> + <Counter worker="6">474643</Counter> + <Counter worker="7">474648</Counter> + <Counter worker="8">474399</Counter> + <Counter worker="9">474399</Counter> + <Counter worker="10">474715</Counter> + <Counter worker="11">473587</Counter> + <Removals worker="0">5</Removals> + <Removals worker="1">5</Removals> + <Removals worker="2">4</Removals> + <Removals worker="3">4</Removals> + <Removals worker="4">4</Removals> + <Removals worker="5">4</Removals> + <Removals worker="6">4</Removals> + <Removals worker="7">4</Removals> + <Removals worker="8">4</Removals> + <Removals worker="9">4</Removals> + <Removals worker="10">4</Removals> + <Removals worker="11">4</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="13"> + <Counter worker="0">390853</Counter> + <Counter worker="1">390987</Counter> + <Counter worker="2">390723</Counter> + <Counter worker="3">390678</Counter> + <Counter worker="4">390913</Counter> + <Counter worker="5">390937</Counter> + <Counter worker="6">390962</Counter> + <Counter worker="7">390979</Counter> + <Counter worker="8">390938</Counter> + <Counter worker="9">390912</Counter> + <Counter worker="10">390866</Counter> + <Counter worker="11">390543</Counter> + <Counter worker="12">614015</Counter> + <Removals worker="0">4</Removals> + <Removals worker="1">4</Removals> + <Removals worker="2">4</Removals> + <Removals worker="3">4</Removals> + <Removals worker="4">4</Removals> + <Removals worker="5">4</Removals> + <Removals worker="6">4</Removals> + <Removals worker="7">4</Removals> + <Removals worker="8">4</Removals> + <Removals worker="9">4</Removals> + <Removals worker="10">4</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="14"> + <Counter worker="0">354581</Counter> + <Counter worker="1">354671</Counter> + <Counter worker="2">354654</Counter> + <Counter worker="3">354641</Counter> + <Counter worker="4">354636</Counter> + <Counter worker="5">354663</Counter> + <Counter worker="6">354653</Counter> + <Counter worker="7">354665</Counter> + <Counter worker="8">354363</Counter> + <Counter worker="9">354896</Counter> + <Counter worker="10">354843</Counter> + <Counter worker="11">354281</Counter> + <Counter worker="12">354830</Counter> + <Counter worker="13">353645</Counter> + <Removals worker="0">4</Removals> + <Removals worker="1">4</Removals> + <Removals worker="2">4</Removals> + <Removals worker="3">4</Removals> + <Removals worker="4">4</Removals> + <Removals worker="5">4</Removals> + <Removals worker="6">4</Removals> + <Removals worker="7">4</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + <Removals worker="13">3</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="15"> + <Counter worker="0">298506</Counter> + <Counter worker="1">298083</Counter> + <Counter worker="2">298405</Counter> + <Counter worker="3">298409</Counter> + <Counter worker="4">298447</Counter> + <Counter worker="5">298465</Counter> + <Counter worker="6">298479</Counter> + <Counter worker="7">298451</Counter> + <Counter worker="8">298450</Counter> + <Counter worker="9">298459</Counter> + <Counter worker="10">298367</Counter> + <Counter worker="11">298373</Counter> + <Counter worker="12">298745</Counter> + <Counter worker="13">297826</Counter> + <Counter worker="14">488482</Counter> + <Removals worker="0">4</Removals> + <Removals worker="1">4</Removals> + <Removals worker="2">4</Removals> + <Removals worker="3">4</Removals> + <Removals worker="4">4</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + <Removals worker="13">3</Removals> + <Removals worker="14">3</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="16"> + <Counter worker="0">273162</Counter> + <Counter worker="1">273268</Counter> + <Counter worker="2">273263</Counter> + <Counter worker="3">273254</Counter> + <Counter worker="4">273272</Counter> + <Counter worker="5">273278</Counter> + <Counter worker="6">273268</Counter> + <Counter worker="7">273277</Counter> + <Counter worker="8">273279</Counter> + <Counter worker="9">273297</Counter> + <Counter worker="10">273284</Counter> + <Counter worker="11">273278</Counter> + <Counter worker="12">273295</Counter> + <Counter worker="13">273262</Counter> + <Counter worker="14">273814</Counter> + <Counter worker="15">271757</Counter> + <Removals worker="0">4</Removals> + <Removals worker="1">4</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + <Removals worker="13">3</Removals> + <Removals worker="14">3</Removals> + <Removals worker="15">3</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="17"> + <Counter worker="0">233516</Counter> + <Counter worker="1">233625</Counter> + <Counter worker="2">233571</Counter> + <Counter worker="3">233567</Counter> + <Counter worker="4">233346</Counter> + <Counter worker="5">233748</Counter> + <Counter worker="6">233628</Counter> + <Counter worker="7">233599</Counter> + <Counter worker="8">233573</Counter> + <Counter worker="9">233599</Counter> + <Counter worker="10">233550</Counter> + <Counter worker="11">233543</Counter> + <Counter worker="12">233272</Counter> + <Counter worker="13">233723</Counter> + <Counter worker="14">233575</Counter> + <Counter worker="15">233448</Counter> + <Counter worker="16">394982</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + <Removals worker="13">3</Removals> + <Removals worker="14">3</Removals> + <Removals worker="15">3</Removals> + <Removals worker="16">3</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="18"> + <Counter worker="0">217987</Counter> + <Counter worker="1">218048</Counter> + <Counter worker="2">218051</Counter> + <Counter worker="3">218037</Counter> + <Counter worker="4">217730</Counter> + <Counter worker="5">218164</Counter> + <Counter worker="6">218054</Counter> + <Counter worker="7">218021</Counter> + <Counter worker="8">218054</Counter> + <Counter worker="9">218022</Counter> + <Counter worker="10">218030</Counter> + <Counter worker="11">218013</Counter> + <Counter worker="12">218032</Counter> + <Counter worker="13">218049</Counter> + <Counter worker="14">218229</Counter> + <Counter worker="15">217757</Counter> + <Counter worker="16">218105</Counter> + <Counter worker="17">217412</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">3</Removals> + <Removals worker="13">3</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="19"> + <Counter worker="0">196715</Counter> + <Counter worker="1">196796</Counter> + <Counter worker="2">169727</Counter> + <Counter worker="3">169746</Counter> + <Counter worker="4">197077</Counter> + <Counter worker="5">197091</Counter> + <Counter worker="6">197826</Counter> + <Counter worker="7">197828</Counter> + <Counter worker="8">196758</Counter> + <Counter worker="9">196731</Counter> + <Counter worker="10">169676</Counter> + <Counter worker="11">169675</Counter> + <Counter worker="12">197102</Counter> + <Counter worker="13">197081</Counter> + <Counter worker="14">197523</Counter> + <Counter worker="15">197995</Counter> + <Counter worker="16">196953</Counter> + <Counter worker="17">196313</Counter> + <Counter worker="18">304517</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">3</Removals> + <Removals worker="11">3</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="20"> + <Counter worker="0">178383</Counter> + <Counter worker="1">178028</Counter> + <Counter worker="2">178311</Counter> + <Counter worker="3">178276</Counter> + <Counter worker="4">178340</Counter> + <Counter worker="5">178325</Counter> + <Counter worker="6">178082</Counter> + <Counter worker="7">178470</Counter> + <Counter worker="8">178268</Counter> + <Counter worker="9">178283</Counter> + <Counter worker="10">178312</Counter> + <Counter worker="11">178303</Counter> + <Counter worker="12">178348</Counter> + <Counter worker="13">178339</Counter> + <Counter worker="14">178321</Counter> + <Counter worker="15">178316</Counter> + <Counter worker="16">178338</Counter> + <Counter worker="17">178233</Counter> + <Counter worker="18">178280</Counter> + <Counter worker="19">177905</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">3</Removals> + <Removals worker="9">3</Removals> + <Removals worker="10">2</Removals> + <Removals worker="11">2</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + <Removals worker="19">2</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="21"> + <Counter worker="0">156035</Counter> + <Counter worker="1">156118</Counter> + <Counter worker="2">155850</Counter> + <Counter worker="3">156210</Counter> + <Counter worker="4">151663</Counter> + <Counter worker="5">151652</Counter> + <Counter worker="6">156116</Counter> + <Counter worker="7">156118</Counter> + <Counter worker="8">156103</Counter> + <Counter worker="9">156104</Counter> + <Counter worker="10">156092</Counter> + <Counter worker="11">156092</Counter> + <Counter worker="12">151664</Counter> + <Counter worker="13">151667</Counter> + <Counter worker="14">156123</Counter> + <Counter worker="15">156108</Counter> + <Counter worker="16">156118</Counter> + <Counter worker="17">156108</Counter> + <Counter worker="18">156283</Counter> + <Counter worker="19">155715</Counter> + <Counter worker="20">289582</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">3</Removals> + <Removals worker="7">3</Removals> + <Removals worker="8">2</Removals> + <Removals worker="9">2</Removals> + <Removals worker="10">2</Removals> + <Removals worker="11">2</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + <Removals worker="19">2</Removals> + <Removals worker="20">2</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="22"> + <Counter worker="0">146560</Counter> + <Counter worker="1">146648</Counter> + <Counter worker="2">146628</Counter> + <Counter worker="3">146601</Counter> + <Counter worker="4">146606</Counter> + <Counter worker="5">146602</Counter> + <Counter worker="6">146646</Counter> + <Counter worker="7">146641</Counter> + <Counter worker="8">146632</Counter> + <Counter worker="9">146627</Counter> + <Counter worker="10">146624</Counter> + <Counter worker="11">146633</Counter> + <Counter worker="12">146352</Counter> + <Counter worker="13">146736</Counter> + <Counter worker="14">146805</Counter> + <Counter worker="15">146444</Counter> + <Counter worker="16">146645</Counter> + <Counter worker="17">146641</Counter> + <Counter worker="18">146648</Counter> + <Counter worker="19">146632</Counter> + <Counter worker="20">146586</Counter> + <Counter worker="21">146279</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">3</Removals> + <Removals worker="5">3</Removals> + <Removals worker="6">2</Removals> + <Removals worker="7">2</Removals> + <Removals worker="8">2</Removals> + <Removals worker="9">2</Removals> + <Removals worker="10">2</Removals> + <Removals worker="11">2</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + <Removals worker="19">2</Removals> + <Removals worker="20">2</Removals> + <Removals worker="21">2</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="23"> + <Counter worker="0">131235</Counter> + <Counter worker="1">131314</Counter> + <Counter worker="2">131299</Counter> + <Counter worker="3">131299</Counter> + <Counter worker="4">131242</Counter> + <Counter worker="5">131224</Counter> + <Counter worker="6">127385</Counter> + <Counter worker="7">127375</Counter> + <Counter worker="8">131303</Counter> + <Counter worker="9">131301</Counter> + <Counter worker="10">131304</Counter> + <Counter worker="11">131303</Counter> + <Counter worker="12">131295</Counter> + <Counter worker="13">131288</Counter> + <Counter worker="14">127373</Counter> + <Counter worker="15">127369</Counter> + <Counter worker="16">131311</Counter> + <Counter worker="17">131309</Counter> + <Counter worker="18">131313</Counter> + <Counter worker="19">131313</Counter> + <Counter worker="20">131326</Counter> + <Counter worker="21">131229</Counter> + <Counter worker="22">246942</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">3</Removals> + <Removals worker="3">3</Removals> + <Removals worker="4">2</Removals> + <Removals worker="5">2</Removals> + <Removals worker="6">2</Removals> + <Removals worker="7">2</Removals> + <Removals worker="8">2</Removals> + <Removals worker="9">2</Removals> + <Removals worker="10">2</Removals> + <Removals worker="11">2</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + <Removals worker="19">2</Removals> + <Removals worker="20">2</Removals> + <Removals worker="21">2</Removals> + <Removals worker="22">2</Removals> + </EnterListOpExitPreempt> + <EnterListOpExitPreempt activeWorker="24"> + <Counter worker="0">123660</Counter> + <Counter worker="1">123740</Counter> + <Counter worker="2">123738</Counter> + <Counter worker="3">123718</Counter> + <Counter worker="4">123743</Counter> + <Counter worker="5">123732</Counter> + <Counter worker="6">123720</Counter> + <Counter worker="7">123714</Counter> + <Counter worker="8">123724</Counter> + <Counter worker="9">123726</Counter> + <Counter worker="10">123723</Counter> + <Counter worker="11">123737</Counter> + <Counter worker="12">123727</Counter> + <Counter worker="13">123718</Counter> + <Counter worker="14">123714</Counter> + <Counter worker="15">123708</Counter> + <Counter worker="16">123738</Counter> + <Counter worker="17">123745</Counter> + <Counter worker="18">123733</Counter> + <Counter worker="19">123743</Counter> + <Counter worker="20">123749</Counter> + <Counter worker="21">123728</Counter> + <Counter worker="22">123925</Counter> + <Counter worker="23">123062</Counter> + <Removals worker="0">3</Removals> + <Removals worker="1">3</Removals> + <Removals worker="2">2</Removals> + <Removals worker="3">2</Removals> + <Removals worker="4">2</Removals> + <Removals worker="5">2</Removals> + <Removals worker="6">2</Removals> + <Removals worker="7">2</Removals> + <Removals worker="8">2</Removals> + <Removals worker="9">2</Removals> + <Removals worker="10">2</Removals> + <Removals worker="11">2</Removals> + <Removals worker="12">2</Removals> + <Removals worker="13">2</Removals> + <Removals worker="14">2</Removals> + <Removals worker="15">2</Removals> + <Removals worker="16">2</Removals> + <Removals worker="17">2</Removals> + <Removals worker="18">2</Removals> + <Removals worker="19">2</Removals> + <Removals worker="20">2</Removals> + <Removals worker="21">2</Removals> + <Removals worker="22">2</Removals> + <Removals worker="23">2</Removals> + </EnterListOpExitPreempt> + <Mutex activeWorker="1"> + <Counter worker="0">7680476</Counter> + </Mutex> + <Mutex activeWorker="2"> + <Counter worker="0">7649787</Counter> + <Counter worker="1">7658861</Counter> + </Mutex> + <Mutex activeWorker="3"> + <Counter worker="0">7393540</Counter> + <Counter worker="1">7402581</Counter> + <Counter worker="2">7403140</Counter> + </Mutex> + <Mutex activeWorker="4"> + <Counter worker="0">7194089</Counter> + <Counter worker="1">7203046</Counter> + <Counter worker="2">7203574</Counter> + <Counter worker="3">7203560</Counter> + </Mutex> + <Mutex activeWorker="5"> + <Counter worker="0">7087003</Counter> + <Counter worker="1">7095852</Counter> + <Counter worker="2">7096389</Counter> + <Counter worker="3">7096363</Counter> + <Counter worker="4">7096491</Counter> + </Mutex> + <Mutex activeWorker="6"> + <Counter worker="0">7006696</Counter> + <Counter worker="1">7015461</Counter> + <Counter worker="2">7015941</Counter> + <Counter worker="3">7016000</Counter> + <Counter worker="4">7015947</Counter> + <Counter worker="5">7015996</Counter> + </Mutex> + <Mutex activeWorker="7"> + <Counter worker="0">6976943</Counter> + <Counter worker="1">6985731</Counter> + <Counter worker="2">6985651</Counter> + <Counter worker="3">6985612</Counter> + <Counter worker="4">6986001</Counter> + <Counter worker="5">6986054</Counter> + <Counter worker="6">7043421</Counter> + </Mutex> + <Mutex activeWorker="8"> + <Counter worker="0">6682168</Counter> + <Counter worker="1">6690928</Counter> + <Counter worker="2">6690996</Counter> + <Counter worker="3">6691019</Counter> + <Counter worker="4">6691217</Counter> + <Counter worker="5">6691300</Counter> + <Counter worker="6">6692801</Counter> + <Counter worker="7">6692823</Counter> + </Mutex> + <Mutex activeWorker="9"> + <Counter worker="0">6736624</Counter> + <Counter worker="1">6745348</Counter> + <Counter worker="2">6746148</Counter> + <Counter worker="3">6746156</Counter> + <Counter worker="4">6746117</Counter> + <Counter worker="5">6746141</Counter> + <Counter worker="6">6747971</Counter> + <Counter worker="7">6747968</Counter> + <Counter worker="8">7676536</Counter> + </Mutex> + <Mutex activeWorker="10"> + <Counter worker="0">6749025</Counter> + <Counter worker="1">6757723</Counter> + <Counter worker="2">6757477</Counter> + <Counter worker="3">6757456</Counter> + <Counter worker="4">6757723</Counter> + <Counter worker="5">6757783</Counter> + <Counter worker="6">6757880</Counter> + <Counter worker="7">6757911</Counter> + <Counter worker="8">7693258</Counter> + <Counter worker="9">7693223</Counter> + </Mutex> + <Mutex activeWorker="11"> + <Counter worker="0">6671003</Counter> + <Counter worker="1">6679706</Counter> + <Counter worker="2">6679612</Counter> + <Counter worker="3">6679621</Counter> + <Counter worker="4">6680804</Counter> + <Counter worker="5">6680858</Counter> + <Counter worker="6">6681681</Counter> + <Counter worker="7">6681689</Counter> + <Counter worker="8">7404669</Counter> + <Counter worker="9">7404627</Counter> + <Counter worker="10">7404685</Counter> + </Mutex> + <Mutex activeWorker="12"> + <Counter worker="0">6737618</Counter> + <Counter worker="1">6746369</Counter> + <Counter worker="2">6746416</Counter> + <Counter worker="3">6746489</Counter> + <Counter worker="4">6746789</Counter> + <Counter worker="5">6746824</Counter> + <Counter worker="6">6747222</Counter> + <Counter worker="7">6747265</Counter> + <Counter worker="8">7343011</Counter> + <Counter worker="9">7343034</Counter> + <Counter worker="10">7342977</Counter> + <Counter worker="11">7343007</Counter> + </Mutex> + <Mutex activeWorker="13"> + <Counter worker="0">6733332</Counter> + <Counter worker="1">6742056</Counter> + <Counter worker="2">6742233</Counter> + <Counter worker="3">6742219</Counter> + <Counter worker="4">6742386</Counter> + <Counter worker="5">6742452</Counter> + <Counter worker="6">6742845</Counter> + <Counter worker="7">6742844</Counter> + <Counter worker="8">7210529</Counter> + <Counter worker="9">7210535</Counter> + <Counter worker="10">7210484</Counter> + <Counter worker="11">7210534</Counter> + <Counter worker="12">7210645</Counter> + </Mutex> + <Mutex activeWorker="14"> + <Counter worker="0">6691733</Counter> + <Counter worker="1">6700510</Counter> + <Counter worker="2">6700036</Counter> + <Counter worker="3">6700084</Counter> + <Counter worker="4">6700173</Counter> + <Counter worker="5">6700238</Counter> + <Counter worker="6">6701304</Counter> + <Counter worker="7">6701287</Counter> + <Counter worker="8">7072832</Counter> + <Counter worker="9">7072830</Counter> + <Counter worker="10">7088968</Counter> + <Counter worker="11">7088996</Counter> + <Counter worker="12">7088977</Counter> + <Counter worker="13">7089011</Counter> + </Mutex> + <Mutex activeWorker="15"> + <Counter worker="0">6721849</Counter> + <Counter worker="1">6730583</Counter> + <Counter worker="2">6730294</Counter> + <Counter worker="3">6730321</Counter> + <Counter worker="4">6730411</Counter> + <Counter worker="5">6730453</Counter> + <Counter worker="6">6730146</Counter> + <Counter worker="7">6730131</Counter> + <Counter worker="8">7074144</Counter> + <Counter worker="9">7074121</Counter> + <Counter worker="10">7076841</Counter> + <Counter worker="11">7076863</Counter> + <Counter worker="12">7077436</Counter> + <Counter worker="13">7077458</Counter> + <Counter worker="14">7090189</Counter> + </Mutex> + <Mutex activeWorker="16"> + <Counter worker="0">6718027</Counter> + <Counter worker="1">6726778</Counter> + <Counter worker="2">6726041</Counter> + <Counter worker="3">6726047</Counter> + <Counter worker="4">6727528</Counter> + <Counter worker="5">6727525</Counter> + <Counter worker="6">6729605</Counter> + <Counter worker="7">6729631</Counter> + <Counter worker="8">6767904</Counter> + <Counter worker="9">6767992</Counter> + <Counter worker="10">6779521</Counter> + <Counter worker="11">6779523</Counter> + <Counter worker="12">6779103</Counter> + <Counter worker="13">6779108</Counter> + <Counter worker="14">6778120</Counter> + <Counter worker="15">6778131</Counter> + </Mutex> + <Mutex activeWorker="17"> + <Counter worker="0">6687183</Counter> + <Counter worker="1">6695943</Counter> + <Counter worker="2">6695989</Counter> + <Counter worker="3">6696008</Counter> + <Counter worker="4">6696296</Counter> + <Counter worker="5">6696358</Counter> + <Counter worker="6">6696053</Counter> + <Counter worker="7">6696009</Counter> + <Counter worker="8">6765358</Counter> + <Counter worker="9">6765374</Counter> + <Counter worker="10">6780587</Counter> + <Counter worker="11">6780559</Counter> + <Counter worker="12">6779713</Counter> + <Counter worker="13">6779703</Counter> + <Counter worker="14">6787330</Counter> + <Counter worker="15">6787339</Counter> + <Counter worker="16">7674353</Counter> + </Mutex> + <Mutex activeWorker="18"> + <Counter worker="0">6709011</Counter> + <Counter worker="1">6717861</Counter> + <Counter worker="2">6717036</Counter> + <Counter worker="3">6717045</Counter> + <Counter worker="4">6717409</Counter> + <Counter worker="5">6717461</Counter> + <Counter worker="6">6719484</Counter> + <Counter worker="7">6719457</Counter> + <Counter worker="8">6797765</Counter> + <Counter worker="9">6797773</Counter> + <Counter worker="10">6806790</Counter> + <Counter worker="11">6806778</Counter> + <Counter worker="12">6810897</Counter> + <Counter worker="13">6810933</Counter> + <Counter worker="14">6809928</Counter> + <Counter worker="15">6809954</Counter> + <Counter worker="16">7647776</Counter> + <Counter worker="17">7647806</Counter> + </Mutex> + <Mutex activeWorker="19"> + <Counter worker="0">6739530</Counter> + <Counter worker="1">6748279</Counter> + <Counter worker="2">6748555</Counter> + <Counter worker="3">6748576</Counter> + <Counter worker="4">6749205</Counter> + <Counter worker="5">6749252</Counter> + <Counter worker="6">6750286</Counter> + <Counter worker="7">6750300</Counter> + <Counter worker="8">6826144</Counter> + <Counter worker="9">6826201</Counter> + <Counter worker="10">6836017</Counter> + <Counter worker="11">6836059</Counter> + <Counter worker="12">6837710</Counter> + <Counter worker="13">6837763</Counter> + <Counter worker="14">6835561</Counter> + <Counter worker="15">6835505</Counter> + <Counter worker="16">7397983</Counter> + <Counter worker="17">7397940</Counter> + <Counter worker="18">7397972</Counter> + </Mutex> + <Mutex activeWorker="20"> + <Counter worker="0">6748499</Counter> + <Counter worker="1">6757232</Counter> + <Counter worker="2">6757547</Counter> + <Counter worker="3">6757498</Counter> + <Counter worker="4">6758242</Counter> + <Counter worker="5">6758254</Counter> + <Counter worker="6">6757309</Counter> + <Counter worker="7">6757363</Counter> + <Counter worker="8">6817716</Counter> + <Counter worker="9">6817763</Counter> + <Counter worker="10">6824387</Counter> + <Counter worker="11">6824430</Counter> + <Counter worker="12">6827806</Counter> + <Counter worker="13">6827825</Counter> + <Counter worker="14">6827134</Counter> + <Counter worker="15">6827190</Counter> + <Counter worker="16">7366015</Counter> + <Counter worker="17">7366019</Counter> + <Counter worker="18">7365997</Counter> + <Counter worker="19">7365984</Counter> + </Mutex> + <Mutex activeWorker="21"> + <Counter worker="0">6726093</Counter> + <Counter worker="1">6734831</Counter> + <Counter worker="2">6734482</Counter> + <Counter worker="3">6734490</Counter> + <Counter worker="4">6734692</Counter> + <Counter worker="5">6734702</Counter> + <Counter worker="6">6736344</Counter> + <Counter worker="7">6736363</Counter> + <Counter worker="8">6794287</Counter> + <Counter worker="9">6794321</Counter> + <Counter worker="10">6800684</Counter> + <Counter worker="11">6800717</Counter> + <Counter worker="12">6803867</Counter> + <Counter worker="13">6803909</Counter> + <Counter worker="14">6804429</Counter> + <Counter worker="15">6804434</Counter> + <Counter worker="16">7239650</Counter> + <Counter worker="17">7239630</Counter> + <Counter worker="18">7239608</Counter> + <Counter worker="19">7239574</Counter> + <Counter worker="20">7239666</Counter> + </Mutex> + <Mutex activeWorker="22"> + <Counter worker="0">6685849</Counter> + <Counter worker="1">6692439</Counter> + <Counter worker="2">6692689</Counter> + <Counter worker="3">6692630</Counter> + <Counter worker="4">6692772</Counter> + <Counter worker="5">6692826</Counter> + <Counter worker="6">6692845</Counter> + <Counter worker="7">6692843</Counter> + <Counter worker="8">6745537</Counter> + <Counter worker="9">6745542</Counter> + <Counter worker="10">6755830</Counter> + <Counter worker="11">6755841</Counter> + <Counter worker="12">6758086</Counter> + <Counter worker="13">6758133</Counter> + <Counter worker="14">6760475</Counter> + <Counter worker="15">6760440</Counter> + <Counter worker="16">7082100</Counter> + <Counter worker="17">7082147</Counter> + <Counter worker="18">7082086</Counter> + <Counter worker="19">7082122</Counter> + <Counter worker="20">7082104</Counter> + <Counter worker="21">7082114</Counter> + </Mutex> + <Mutex activeWorker="23"> + <Counter worker="0">6726178</Counter> + <Counter worker="1">6734879</Counter> + <Counter worker="2">6734932</Counter> + <Counter worker="3">6734960</Counter> + <Counter worker="4">6735119</Counter> + <Counter worker="5">6735172</Counter> + <Counter worker="6">6734709</Counter> + <Counter worker="7">6734748</Counter> + <Counter worker="8">6813708</Counter> + <Counter worker="9">6813787</Counter> + <Counter worker="10">6819414</Counter> + <Counter worker="11">6819381</Counter> + <Counter worker="12">6821850</Counter> + <Counter worker="13">6821903</Counter> + <Counter worker="14">6822277</Counter> + <Counter worker="15">6822309</Counter> + <Counter worker="16">7050874</Counter> + <Counter worker="17">7050860</Counter> + <Counter worker="18">7051104</Counter> + <Counter worker="19">7051114</Counter> + <Counter worker="20">7051298</Counter> + <Counter worker="21">7051302</Counter> + <Counter worker="22">7058421</Counter> + </Mutex> + <Mutex activeWorker="24"> + <Counter worker="0">6732039</Counter> + <Counter worker="1">6740799</Counter> + <Counter worker="2">6739953</Counter> + <Counter worker="3">6739922</Counter> + <Counter worker="4">6740444</Counter> + <Counter worker="5">6740482</Counter> + <Counter worker="6">6743768</Counter> + <Counter worker="7">6743812</Counter> + <Counter worker="8">6763824</Counter> + <Counter worker="9">6763887</Counter> + <Counter worker="10">6778202</Counter> + <Counter worker="11">6778178</Counter> + <Counter worker="12">6778302</Counter> + <Counter worker="13">6778317</Counter> + <Counter worker="14">6776805</Counter> + <Counter worker="15">6776837</Counter> + <Counter worker="16">6768008</Counter> + <Counter worker="17">6768084</Counter> + <Counter worker="18">6773716</Counter> + <Counter worker="19">6773687</Counter> + <Counter worker="20">6778367</Counter> + <Counter worker="21">6778379</Counter> + <Counter worker="22">6777990</Counter> + <Counter worker="23">6780252</Counter> + </Mutex> +</TestEpoch01> diff --git a/testsuite/epoch01/test_main.c b/testsuite/epoch01/test_main.c new file mode 100644 index 00000000..7f8003b5 --- /dev/null +++ b/testsuite/epoch01/test_main.c @@ -0,0 +1,596 @@ +/* + * Copyright (c) 2018 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <machine/rtems-bsd-kernel-space.h> + +#include <sys/param.h> +#include <sys/types.h> +#include <sys/systm.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/epoch.h> + +#include <assert.h> +#include <inttypes.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <ck_queue.h> + +#include <rtems.h> +#include <rtems/cpuuse.h> +#include <rtems/test.h> +#include <rtems/thread.h> + +#define TEST_NAME "LIBBSD EPOCH 1" + +#define TEST_XML_NAME "TestEpoch01" + +#define CPU_COUNT 32 + +typedef struct { + uint32_t counter[CPU_COUNT]; + uint32_t removals[CPU_COUNT]; + uint32_t item_counter[CPU_COUNT][CPU_COUNT]; +} test_stats; + +typedef struct test_item { + CK_SLIST_ENTRY(test_item) link; + struct epoch_context ec; + size_t index; + size_t worker_index; +} test_item; + +typedef struct { + rtems_test_parallel_context base; + size_t active_workers; + CK_SLIST_HEAD(, test_item) item_list; + rtems_mutex mtx[2]; + test_item items[CPU_COUNT]; + test_stats stats; +} test_context; + +static test_context test_instance; + +static rtems_interval +test_duration(void) +{ + + return (1 * rtems_clock_get_ticks_per_second()); +} + +static rtems_interval +test_init(rtems_test_parallel_context *base, void *arg, size_t active_workers) +{ + test_context *ctx; + + ctx = (test_context *)base; + memset(&ctx->stats, 0, sizeof(ctx->stats)); + return (test_duration()); +} + +static void +test_fini(rtems_test_parallel_context *base, const char *name, + size_t active_workers) +{ + test_context *ctx; + size_t i; + + ctx = (test_context *)base; + + printf(" <%s activeWorker=\"%zu\">\n", name, active_workers); + + for (i = 0; i < active_workers; ++i) { + printf(" <Counter worker=\"%zu\">%" PRIu32 "</Counter>\n", + i, ctx->stats.counter[i]); + } + + for (i = 0; i < active_workers; ++i) { + uint32_t r; + + r = ctx->stats.removals[i]; + if (r > 0) { + printf(" <Removals worker=\"%zu\">%" PRIu32 + "</Removals>\n", i, r); + } + } + + printf(" </%s>\n", name); +} + +static void +test_enter_exit_body(rtems_test_parallel_context *base, void *arg, + size_t active_workers, size_t worker_index) +{ + test_context *ctx = (test_context *)base; + epoch_t e = global_epoch; + uint32_t counter; + + ctx = (test_context *)base; + e = global_epoch; + counter = 0; + + while (!rtems_test_parallel_stop_job(&ctx->base)) { + epoch_enter(e); + ++counter; + epoch_exit(e); + } + + ctx->stats.counter[worker_index] = counter; +} + +static void +test_enter_exit_fini(rtems_test_parallel_context *base, void *arg, + size_t active_workers) +{ + + test_fini(base, "EnterExit", active_workers); +} + +static rtems_interval +test_list_init(rtems_test_parallel_context *base, void *arg, + size_t active_workers) +{ + test_context *ctx; + size_t i; + + ctx = (test_context *)base; + ctx->active_workers = active_workers; + CK_SLIST_INIT(&ctx->item_list); + + for (i = 0; i < active_workers; ++i) { + test_item *item = &ctx->items[i]; + + CK_SLIST_INSERT_HEAD(&ctx->item_list, item, link); + item->index = i; + + if (i == 0) { + item->worker_index = 0; + } else { + item->worker_index = CPU_COUNT; + } + } + + return (test_init(&ctx->base, arg, active_workers)); +} + +static void +test_list_callback(epoch_context_t ec) +{ + test_context *ctx; + test_item *item; + test_item *next; + + ctx = &test_instance; + item = __containerof(ec, struct test_item, ec); + item->worker_index = (item->worker_index + 1) % ctx->active_workers; + next = CK_SLIST_NEXT(item, link); + + if (next != NULL) { + CK_SLIST_INSERT_AFTER(next, item, link); + } else { + CK_SLIST_INSERT_HEAD(&ctx->item_list, item, link); + } +} + +static void +test_enter_list_op_exit_body(rtems_test_parallel_context *base, void *arg, + size_t active_workers, size_t worker_index) +{ + test_context *ctx; + epoch_t e; + uint32_t counter; + uint32_t removals; + uint32_t item_counter[CPU_COUNT]; + + ctx = (test_context *)base; + e = global_epoch; + counter = 0; + removals = 0; + memset(item_counter, 0, sizeof(item_counter)); + + while (!rtems_test_parallel_stop_job(&ctx->base)) { + test_item *prev; + test_item *item; + test_item *tmp; + test_item *rm; + + epoch_enter(e); + ++counter; + + prev = NULL; + rm = NULL; + CK_SLIST_FOREACH_SAFE(item, &ctx->item_list, link, tmp) { + ++item_counter[item->index]; + + if (item->worker_index == worker_index) { + ++removals; + rm = item; + + if (prev != NULL) { + CK_SLIST_REMOVE_AFTER(prev, link); + } else { + CK_SLIST_REMOVE_HEAD(&ctx->item_list, + link); + } + } + + prev = item; + } + + epoch_exit(e); + + if (rm != NULL) { + epoch_call(e, &rm->ec, test_list_callback); + epoch_wait(e); + } + } + + ctx->stats.counter[worker_index] = counter; + ctx->stats.removals[worker_index] = removals; + memcpy(ctx->stats.item_counter[worker_index], item_counter, + sizeof(ctx->stats.item_counter[worker_index])); +} + +static void +test_enter_list_op_exit_fini(rtems_test_parallel_context *base, void *arg, + size_t active_workers) +{ + + test_fini(base, "EnterListOpExit", active_workers); +} + +static void +test_enter_exit_preempt_body(rtems_test_parallel_context *base, void *arg, + size_t active_workers, size_t worker_index) +{ + test_context *ctx = (test_context *)base; + epoch_t e = global_epoch; + uint32_t counter; + + ctx = (test_context *)base; + e = global_epoch; + counter = 0; + + while (!rtems_test_parallel_stop_job(&ctx->base)) { + epoch_enter_preempt(e); + ++counter; + epoch_exit_preempt(e); + } + + ctx->stats.counter[worker_index] = counter; +} + +static void +test_enter_exit_preempt_fini(rtems_test_parallel_context *base, + void *arg, size_t active_workers) +{ + + test_fini(base, "EnterExitPreempt", active_workers); +} + +static void +test_enter_list_op_exit_preempt_body(rtems_test_parallel_context *base, + void *arg, size_t active_workers, size_t worker_index) +{ + test_context *ctx; + epoch_t e; + uint32_t counter; + uint32_t removals; + uint32_t item_counter[CPU_COUNT]; + + ctx = (test_context *)base; + e = global_epoch; + counter = 0; + removals = 0; + memset(item_counter, 0, sizeof(item_counter)); + + while (!rtems_test_parallel_stop_job(&ctx->base)) { + test_item *prev; + test_item *item; + test_item *tmp; + test_item *rm; + + epoch_enter_preempt(e); + ++counter; + + prev = NULL; + rm = NULL; + CK_SLIST_FOREACH_SAFE(item, &ctx->item_list, link, tmp) { + ++item_counter[item->index]; + + if (item->worker_index == worker_index) { + ++removals; + rm = item; + + if (prev != NULL) { + CK_SLIST_REMOVE_AFTER(prev, link); + } else { + CK_SLIST_REMOVE_HEAD(&ctx->item_list, + link); + } + } + + prev = item; + } + + epoch_exit_preempt(e); + + if (rm != NULL) { + epoch_call(e, &rm->ec, test_list_callback); + epoch_wait_preempt(e); + } + } + + ctx->stats.counter[worker_index] = counter; + ctx->stats.removals[worker_index] = removals; + memcpy(ctx->stats.item_counter[worker_index], item_counter, + sizeof(ctx->stats.item_counter[worker_index])); +} + +static void +test_enter_list_op_exit_preempt_fini(rtems_test_parallel_context *base, + void *arg, size_t active_workers) +{ + + test_fini(base, "EnterListOpExitPreempt", active_workers); +} + +static void +test_thread_local_mutex_body(rtems_test_parallel_context *base, void *arg, + size_t active_workers, size_t worker_index) +{ + test_context *ctx = (test_context *)base; + rtems_mutex mtx; + uint32_t counter; + + ctx = (test_context *)base; + rtems_mutex_init(&mtx, "test"); + counter = 0; + + while (!rtems_test_parallel_stop_job(&ctx->base)) { + rtems_mutex_lock(&mtx); + ++counter; + rtems_mutex_unlock(&mtx); + } + + rtems_mutex_destroy(&mtx); + ctx->stats.counter[worker_index] = counter; +} + +static void +test_thread_local_mutex_fini(rtems_test_parallel_context *base, + void *arg, size_t active_workers) +{ + + test_fini(base, "ThreadLocalMutex", active_workers); +} + +static void +test_enter_mutex_exit_preempt_body(rtems_test_parallel_context *base, + void *arg, size_t active_workers, size_t worker_index) +{ + test_context *ctx = (test_context *)base; + epoch_t e = global_epoch; + uint32_t counter; + rtems_mutex *mtx; + + ctx = (test_context *)base; + e = global_epoch; + counter = 0; + mtx = &ctx->mtx[worker_index % RTEMS_ARRAY_SIZE(ctx->mtx)]; + + while (!rtems_test_parallel_stop_job(&ctx->base)) { + epoch_enter_preempt(e); + rtems_mutex_lock(mtx); + ++counter; + rtems_mutex_unlock(mtx); + epoch_exit_preempt(e); + } + + ctx->stats.counter[worker_index] = counter; +} + +static void +test_enter_mutex_exit_preempt_fini(rtems_test_parallel_context *base, + void *arg, size_t active_workers) +{ + + test_fini(base, "EnterMutexExitPreempt", active_workers); +} + +static const rtems_test_parallel_job test_jobs[] = { + { + .init = test_init, + .body = test_enter_exit_body, + .fini = test_enter_exit_fini, + .cascade = true + }, { + .init = test_list_init, + .body = test_enter_list_op_exit_body, + .fini = test_enter_list_op_exit_fini, + .cascade = true + }, { + .init = test_init, + .body = test_enter_exit_preempt_body, + .fini = test_enter_exit_preempt_fini, + .cascade = true + }, { + .init = test_list_init, + .body = test_enter_list_op_exit_preempt_body, + .fini = test_enter_list_op_exit_preempt_fini, + .cascade = true + }, { + .init = test_init, + .body = test_thread_local_mutex_body, + .fini = test_thread_local_mutex_fini, + .cascade = true + }, { + .init = test_init, + .body = test_enter_mutex_exit_preempt_body, + .fini = test_enter_mutex_exit_preempt_fini, + .cascade = true + } +}; + +static void +set_affinity(rtems_id task, size_t cpu_index) +{ + rtems_status_code sc; + cpu_set_t set; + rtems_id sched; + rtems_task_priority prio; + + sc = rtems_scheduler_ident_by_processor(cpu_index, &sched); + assert(sc == RTEMS_SUCCESSFUL); + + sc = rtems_task_set_priority(task, RTEMS_CURRENT_PRIORITY, &prio); + assert(sc == RTEMS_SUCCESSFUL); + + sc = rtems_task_set_scheduler(task, sched, prio); + assert(sc == RTEMS_SUCCESSFUL); + + CPU_ZERO(&set); + CPU_SET((int)cpu_index, &set); + sc = rtems_task_set_affinity(task, sizeof(set), &set); + assert(sc == RTEMS_SUCCESSFUL); +} + +static void +setup_worker(rtems_test_parallel_context *base, size_t worker_index, + rtems_id worker_id) +{ + + set_affinity(worker_id, worker_index); +} + +static void +test_main(void) +{ + test_context *ctx; + + ctx = &test_instance; + rtems_mutex_init(&ctx->mtx[0], "test 0"); + rtems_mutex_init(&ctx->mtx[1], "test 1"); + + printf("<" TEST_XML_NAME ">\n"); + + setup_worker(&ctx->base, 0, rtems_task_self()); + rtems_test_parallel(&ctx->base, setup_worker, &test_jobs[0], + RTEMS_ARRAY_SIZE(test_jobs)); + + printf("</" TEST_XML_NAME ">\n"); + rtems_mutex_destroy(&ctx->mtx[0]); + rtems_mutex_destroy(&ctx->mtx[1]); + exit(0); +} + +#define CONFIGURE_MAXIMUM_PROCESSORS CPU_COUNT + +#ifdef RTEMS_SMP + +#define CONFIGURE_SCHEDULER_EDF_SMP + +#include <rtems/scheduler.h> + +RTEMS_SCHEDULER_EDF_SMP(a, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(b, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(c, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(d, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(e, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(g, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(h, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(i, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(j, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(k, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(l, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(m, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(n, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(o, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(p, CPU_COUNT); +RTEMS_SCHEDULER_EDF_SMP(q, CPU_COUNT); + +#define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(a, rtems_build_name(' ', ' ', ' ', 'a')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(b, rtems_build_name(' ', ' ', ' ', 'b')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(c, rtems_build_name(' ', ' ', ' ', 'c')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(d, rtems_build_name(' ', ' ', ' ', 'd')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(e, rtems_build_name(' ', ' ', ' ', 'e')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(g, rtems_build_name(' ', ' ', ' ', 'g')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(h, rtems_build_name(' ', ' ', ' ', 'h')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(i, rtems_build_name(' ', ' ', ' ', 'i')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(j, rtems_build_name(' ', ' ', ' ', 'j')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(k, rtems_build_name(' ', ' ', ' ', 'k')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(l, rtems_build_name(' ', ' ', ' ', 'l')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(m, rtems_build_name(' ', ' ', ' ', 'm')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(n, rtems_build_name(' ', ' ', ' ', 'n')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(o, rtems_build_name(' ', ' ', ' ', 'o')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(p, rtems_build_name(' ', ' ', ' ', 'p')), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP(q, rtems_build_name(' ', ' ', ' ', 'q')) \ + +#define CONFIGURE_SCHEDULER_ASSIGNMENTS \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(2, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(2, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(3, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(3, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(4, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(4, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(5, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(5, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(6, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(6, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(7, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(7, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(8, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(8, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(9, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(9, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(10, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(10, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(11, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(11, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(12, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(12, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(13, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(13, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(14, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(14, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(15, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(15, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL) + +#endif /* RTEMS_SMP */ + +#include <rtems/bsd/test/default-init.h> |