Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[IM] Update read transaction resource minimas #18884

Merged
merged 10 commits into from
Jun 16, 2022

Conversation

erjiaqing
Copy link
Contributor

@erjiaqing erjiaqing commented May 27, 2022

Problem

Fixes #18610
Fixes #17418

Change overview

  • Implemented EnsureResourcesForRead and TrimFabricForRead
  • Unlike subscriptions, we only ensure minimal resources for each fabric and the clients are expected to retry since the span of read transactions are relatively short compared to subscriptions.
  • The PASE sessions will be counter on a virtual fabric and the resources will be guranteed when the device is not "fully" commissioned (i.e. have at least one empty slot for a new fabric)

Testing

  • Removed TestReadHandler_TwoParallelReads, adds TestReadHandler_ParallelReads with 8 cases (including 4 cases around PASE sessions).

There are 10 cases covered by the test.

We will serve the read requests at best efforts, and try not to evict the ongoing read requests (expect the client to retry later since the read transactions are short.)

Oversized read requests will be rejected when we don't have enough resources to serve it.

Case 1: Handling of oversized read requests

But we will still evict the read requests when:

Case 2: One read request in one fabric is oversized, then one incoming read request from another fabric => accept by evicting one (when necessary).
(Repeated with different order to cover https://github.com/project-chip/connectedhomeip/pull/18884/files?diff=split&w=0#diff-09d4e6f8f568b8ae1f60c465f4f2c89e3fb4e92d92ac2308fae80036b2430a1dR818)

Note: the incoming read requests won't evict another read requests in the same fabric:

Case 3: One fabric is oversized, then one incoming read request from the same fabric => reject with Busy (when we don't have enough resources to serve it).
Reject if the fabric is oversized: https://github.com/project-chip/connectedhomeip/pull/18884/files?diff=split&w=0#diff-09d4e6f8f568b8ae1f60c465f4f2c89e3fb4e92d92ac2308fae80036b2430a1dR936

Case 4: One fabric is oversized (with no oversized read requests), and one incoming read request from another fabric => accept by evicting one (when necessary)
(Repeated with different order to cover https://github.com/project-chip/connectedhomeip/pull/18884/files?diff=split&w=0#diff-09d4e6f8f568b8ae1f60c465f4f2c89e3fb4e92d92ac2308fae80036b2430a1dR825)

Case 2 + Case 4: evicting priority:

  1. Evict oversized requests
  2. If all requests are oversized, or no requests are oversized, evict the youngest request.

When handling / evicting read transactions for CASE sessions, the logic depends on whether the fabric table is full:

Case 5: When the device's fabric table is not full, PASE sessions are counted as a valid fabric and can evict existing read transactions.

  • Case 5.1, Case 5.2: It will and will only evict oversized transactions from oversized fabrics.

Covers https://github.com/project-chip/connectedhomeip/pull/18884/files?diff=split&w=0#diff-09d4e6f8f568b8ae1f60c465f4f2c89e3fb4e92d92ac2308fae80036b2430a1dR843

Case 6: The device's fabric table is full, PASE sessions won't be counted as a "valid fabric" and it cannot evict existing read transactions.

It cannot evict transactions from normal fabrics. Just the other side of case 5

Covers https://github.com/project-chip/connectedhomeip/pull/18884/files?diff=split&w=0#diff-09d4e6f8f568b8ae1f60c465f4f2c89e3fb4e92d92ac2308fae80036b2430a1dR916

Case 7: We will accept read transactions on PASE session when the fabric table is full but we have enough resources for it.

Case 8: If the fabric table on the device is full, read transactions on PASE session will always be evicted.

Case 8.1 even if the existing fabrics is oversized, we will still evicting non-oversized "PASE fabric"

Covers https://github.com/project-chip/connectedhomeip/pull/18884/files?diff=split&w=0#diff-09d4e6f8f568b8ae1f60c465f4f2c89e3fb4e92d92ac2308fae80036b2430a1dR967 and https://github.com/project-chip/connectedhomeip/pull/18884/files?diff=split&w=0#diff-09d4e6f8f568b8ae1f60c465f4f2c89e3fb4e92d92ac2308fae80036b2430a1dR847

Case 9 -- PASE sessions are counted as a "normal fabric" if fabric table is not full, the read transactions from PASE sessions have (almost) the same priority when being evicted by incoming read transactions.

Covers https://github.com/project-chip/connectedhomeip/pull/18884/files?diff=split&w=0#diff-09d4e6f8f568b8ae1f60c465f4f2c89e3fb4e92d92ac2308fae80036b2430a1dR967

  • Case 9.1: If the fabric table on the device is not full, read transactions on PASE session will NOT be evicted when the resources used by all PASE sessions ARE NOT exceeding the resources guaranteed to a normal fabric.
  • Case 9.2: If the fabric table on the device is not full, the read handlers from normal fabrics MAY be evicted before all read transactions from PASE sessions are evicted.

    also covers the case of guarantee more resources when possible ([IM] Update read transaction resource minimas #18884 (comment))

Case 10: Just the other side of case 9: read transaction on PASE session will be evicted before evicting any other read transactions, even when the normal fabric is oversized.

Also covers https://github.com/project-chip/connectedhomeip/pull/18884/files?diff=split&w=0#diff-09d4e6f8f568b8ae1f60c465f4f2c89e3fb4e92d92ac2308fae80036b2430a1dR967

@github-actions
Copy link

github-actions bot commented May 27, 2022

PR #18884: Size comparison from e023667 to 95e2104

Increases (27 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section e023667 95e2104 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 645119 645927 808 0.1
.text 561116 561924 808 0.1
lock-ftd LP_CC2652R7 (read only) 679427 680235 808 0.1
.text 582868 583676 808 0.1
lock-mtd LP_CC2652R7 (read only) 628843 629635 792 0.1
.text 532396 533188 792 0.1
pump-app LP_CC2652R7 (read only) 675855 676655 800 0.1
.text 586820 587620 800 0.1
pump-controller-app LP_CC2652R7 (read only) 653783 654583 800 0.1
.text 570008 570808 800 0.1
shell LP_CC2652R7 (read only) 638118 638926 808 0.1
.text 557144 557952 808 0.1
cyw30739 light cyw930739m2evb_01 (read/write) 621654 622462 808 0.1
.app_xip_area 524920 525728 808 0.2
lock cyw930739m2evb_01 (read/write) 630370 631162 792 0.1
.app_xip_area 535108 535900 792 0.1
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 570758 571558 800 0.1
.app_xip_area 465816 466616 800 0.2
efr32 lighting-app BRD4161A (read only) 914152 915544 1392 0.2
.text 914144 915536 1392 0.2
BRD4161A+rpc (read only) 948308 949716 1408 0.1
.text 948300 949708 1408 0.1
BRD4161A+rs911x (read only) 788708 790116 1408 0.2
.text 788700 790108 1408 0.2
lock-app BRD4161A+wf200 (read only) 954012 954796 784 0.1
.text 954004 954788 784 0.1
window-app BRD4161A (read only) 899096 900488 1392 0.2
.text 899088 900480 1392 0.2
esp32 all-clusters-app c3devkit (read only) 1002360 1003304 944 0.1
.flash.text 1002360 1003304 944 0.1
m5stack (read only) 1057283 1058223 940 0.1
.flash.text 1051899 1052839 940 0.1
k32w light k32w061+release (read/write) 680892 681692 800 0.1
.text 596740 597540 800 0.1
lock k32w061+release (read/write) 732216 733016 800 0.1
.text 647664 648464 800 0.1
linux chip-tool-no-interactive-ipv6only arm64 (read only) 9403844 9406980 3136 0.0
.text 7418468 7421604 3136 0.0
thermostat-no-ble arm64 (read only) 2360844 2363980 3136 0.1
.text 1983904 1987040 3136 0.2
mbed lock-app CY8CPROTO_062_4343W+release (read/write) 2423968 2424736 768 0.0
.text 1386612 1387380 768 0.1
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1181523 1182307 784 0.1
text 810416 811208 792 0.1
p6 all-clusters-app default (read/write) 2536792 2538200 1408 0.1
.text 1495056 1496464 1408 0.1
light-app default (read/write) 2420064 2421472 1408 0.1
.text 1378328 1379736 1408 0.1
lock-app default (read/write) 2438112 2439520 1408 0.1
.text 1396376 1397784 1408 0.1
telink light-switch-app tlsr9518adk80d (read/write) 779580 780484 904 0.1
text 551256 552164 908 0.2
lighting-app tlsr9518adk80d (read/write) 799612 800516 904 0.1
text 567990 568900 910 0.2
Decreases (3 builds for cc13x2_26x2)
platform target config section e023667 95e2104 change % change
cc13x2_26x2 lock-ftd LP_CC2652R7 (read/write) 163668 162860 -808 -0.5
pump-app LP_CC2652R7 (read/write) 168408 167608 -800 -0.5
pump-controller-app LP_CC2652R7 (read/write) 190336 189536 -800 -0.4
Full report (27 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section e023667 95e2104 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 645119 645927 808 0.1
(read/write) 159168 159168 0 0.0
.bss 74852 74852 0 0.0
.data 3400 3400 0 0.0
.rodata 83767 83767 0 0.0
.text 561116 561924 808 0.1
lock-ftd LP_CC2652R7 (read only) 679427 680235 808 0.1
(read/write) 163668 162860 -808 -0.5
.bss 72876 72876 0 0.0
.data 3264 3264 0 0.0
.rodata 96075 96075 0 0.0
.text 582868 583676 808 0.1
lock-mtd LP_CC2652R7 (read only) 628843 629635 792 0.1
(read/write) 145992 145992 0 0.0
.bss 68612 68612 0 0.0
.data 3264 3264 0 0.0
.rodata 95955 95955 0 0.0
.text 532396 533188 792 0.1
pump-app LP_CC2652R7 (read only) 675855 676655 800 0.1
(read/write) 168408 167608 -800 -0.5
.bss 73276 73276 0 0.0
.data 3300 3300 0 0.0
.rodata 88551 88551 0 0.0
.text 586820 587620 800 0.1
pump-controller-app LP_CC2652R7 (read only) 653783 654583 800 0.1
(read/write) 190336 189536 -800 -0.4
.bss 73132 73132 0 0.0
.data 3260 3260 0 0.0
.rodata 83295 83295 0 0.0
.text 570008 570808 800 0.1
shell LP_CC2652R7 (read only) 638118 638926 808 0.1
(read/write) 154724 154724 0 0.0
.bss 77204 77204 0 0.0
.data 3404 3404 0 0.0
.rodata 80742 80742 0 0.0
.text 557144 557952 808 0.1
cyw30739 light cyw930739m2evb_01 (read/write) 621654 622462 808 0.1
.app_xip_area 524920 525728 808 0.2
.bss 79376 79376 0 0.0
.data 704 704 0 0.0
.rodata 0 0 0 0.0
.text 0 0 0 0.0
lock cyw930739m2evb_01 (read/write) 630370 631162 792 0.1
.app_xip_area 535108 535900 792 0.1
.bss 77936 77936 0 0.0
.data 672 672 0 0.0
.rodata 0 0 0 0.0
.text 0 0 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 570758 571558 800 0.1
.app_xip_area 465816 466616 800 0.2
.bss 87296 87296 0 0.0
.data 612 612 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read only) 914152 915544 1392 0.2
(read/write) 133464 133464 0 0.0
.bss 131368 131368 0 0.0
.data 2092 2092 0 0.0
.text 914144 915536 1392 0.2
BRD4161A+rpc (read only) 948308 949716 1408 0.1
(read/write) 150152 150152 0 0.0
.bss 147856 147856 0 0.0
.data 2296 2296 0 0.0
.text 948300 949708 1408 0.1
BRD4161A+rs911x (read only) 788708 790116 1408 0.2
(read/write) 129736 129736 0 0.0
.bss 127636 127636 0 0.0
.data 2100 2100 0 0.0
.text 788700 790108 1408 0.2
lock-app BRD4161A+wf200 (read only) 954012 954796 784 0.1
(read/write) 128508 128508 0 0.0
.bss 126444 126444 0 0.0
.data 2064 2064 0 0.0
.text 954004 954788 784 0.1
window-app BRD4161A (read only) 899096 900488 1392 0.2
(read/write) 133520 133520 0 0.0
.bss 131432 131432 0 0.0
.data 2088 2088 0 0.0
.text 899088 900480 1392 0.2
esp32 all-clusters-app c3devkit (read only) 1002360 1003304 944 0.1
(read/write) 1479346 1479346 0 0.0
.dram0.bss 69416 69416 0 0.0
.dram0.data 14640 14640 0 0.0
.flash.rodata 209856 209856 0 0.0
.flash.text 1002360 1003304 944 0.1
.iram0.text 62954 62954 0 0.0
m5stack (read only) 1057283 1058223 940 0.1
(read/write) 481336 481336 0 0.0
.dram0.bss 74936 74936 0 0.0
.dram0.data 34208 34208 0 0.0
.flash.rodata 240196 240196 0 0.0
.flash.text 1051899 1052839 940 0.1
.iram0.text 123267 123267 0 0.0
k32w light k32w061+release (read/write) 680892 681692 800 0.1
.bss 80440 80440 0 0.0
.data 2008 2008 0 0.0
.text 596740 597540 800 0.1
lock k32w061+release (read/write) 732216 733016 800 0.1
.bss 80872 80872 0 0.0
.data 1976 1976 0 0.0
.text 647664 648464 800 0.1
linux chip-tool-no-interactive-ipv6only arm64 (read only) 9403844 9406980 3136 0.0
(read/write) 669057 669057 0 0.0
.bss 42257 42257 0 0.0
.data 1176 1176 0 0.0
.data.rel.ro 606752 606752 0 0.0
.dynamic 560 560 0 0.0
.got 15032 15032 0 0.0
.init 24 24 0 0.0
.init_array 184 184 0 0.0
.rodata 456748 456748 0 0.0
.text 7418468 7421604 3136 0.0
thermostat-no-ble arm64 (read only) 2360844 2363980 3136 0.1
(read/write) 177633 177633 0 0.0
.bss 88209 88209 0 0.0
.data 1520 1520 0 0.0
.data.rel.ro 80056 80056 0 0.0
.dynamic 560 560 0 0.0
.got 4808 4808 0 0.0
.init 24 24 0 0.0
.init_array 376 376 0 0.0
.rodata 147548 147548 0 0.0
.text 1983904 1987040 3136 0.2
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2423968 2424736 768 0.0
.bss 202892 202892 0 0.0
.data 5872 5872 0 0.0
.text 1386612 1387380 768 0.1
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1181523 1182307 784 0.1
bss 139548 139548 0 0.0
rodata 152676 152676 0 0.0
text 810416 811208 792 0.1
p6 all-clusters-app default (read/write) 2536792 2538200 1408 0.1
.bss 137376 137376 0 0.0
.data 2800 2800 0 0.0
.text 1495056 1496464 1408 0.1
light-app default (read/write) 2420064 2421472 1408 0.1
.bss 129712 129712 0 0.0
.data 2600 2600 0 0.0
.text 1378328 1379736 1408 0.1
lock-app default (read/write) 2438112 2439520 1408 0.1
.bss 129520 129520 0 0.0
.data 2568 2568 0 0.0
.text 1396376 1397784 1408 0.1
telink light-switch-app tlsr9518adk80d (read/write) 779580 780484 904 0.1
bss 70840 70840 0 0.0
noinit 40416 40416 0 0.0
text 551256 552164 908 0.2
lighting-app tlsr9518adk80d (read/write) 799612 800516 904 0.1
bss 71100 71100 0 0.0
noinit 40416 40416 0 0.0
text 567990 568900 910 0.2

src/app/InteractionModelEngine.cpp Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.cpp Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.cpp Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.cpp Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.cpp Show resolved Hide resolved
src/app/InteractionModelEngine.h Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.h Outdated Show resolved Hide resolved
src/lib/core/CHIPConfig.h Outdated Show resolved Hide resolved
src/lib/core/CHIPConfig.h Outdated Show resolved Hide resolved
src/lib/core/CHIPConfig.h Outdated Show resolved Hide resolved
@andy31415
Copy link
Contributor

/rebase

@github-actions
Copy link

github-actions bot commented Jun 8, 2022

PR #18884: Size comparison from b8e9ab1 to 4ed3d16

Increases (30 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section b8e9ab1 4ed3d16 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 689863 690727 864 0.1
.text 577272 578136 864 0.1
all-clusters-minimal-app LP_CC2652R7 (read only) 640479 641335 856 0.1
.text 550840 551696 856 0.2
lock-ftd LP_CC2652R7 (read only) 683375 684223 848 0.1
.text 584748 585596 848 0.1
lock-mtd LP_CC2652R7 (read only) 632791 633647 856 0.1
.text 534268 535124 856 0.2
pump-app LP_CC2652R7 (read only) 664819 665667 848 0.1
.text 578020 578868 848 0.1
pump-controller-app LP_CC2652R7 (read only) 655403 656259 856 0.1
.text 570708 571564 856 0.1
shell LP_CC2652R7 (read only) 682142 682998 856 0.1
.text 572952 573808 856 0.1
cyw30739 light cyw930739m2evb_01 (read/write) 602546 603410 864 0.1
.app_xip_area 461492 462356 864 0.2
lock cyw930739m2evb_01 (read/write) 599630 600494 864 0.1
.app_xip_area 458440 459304 864 0.2
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 599374 600222 848 0.1
.app_xip_area 459300 460148 848 0.2
efr32 lighting-app BRD4161A (read only) 914968 916440 1472 0.2
.text 914960 916432 1472 0.2
BRD4161A+rpc (read only) 949188 950644 1456 0.2
.text 949180 950636 1456 0.2
BRD4161A+rs911x (read only) 790156 791612 1456 0.2
.text 790148 791604 1456 0.2
lock-app BRD4161A+wf200 (read only) 958396 959244 848 0.1
.text 958388 959236 848 0.1
window-app BRD4161A (read only) 900040 901512 1472 0.2
.text 900032 901504 1472 0.2
esp32 all-clusters-app c3devkit (read only) 1007708 1008708 1000 0.1
.flash.text 1007708 1008708 1000 0.1
m5stack (read only) 1062479 1063479 1000 0.1
.flash.text 1057095 1058095 1000 0.1
k32w light k32w061+release (read/write) 653744 654592 848 0.1
.text 575896 576744 848 0.1
lock k32w061+release (read/write) 714788 715652 864 0.1
.text 636528 637392 864 0.1
linux chip-tool-no-interactive-ipv6only arm64 (read only) 9474604 9478204 3600 0.0
(read/write) 674257 674273 16 0.0
.bss 43681 43697 16 0.0
.text 7470052 7473652 3600 0.0
thermostat-no-ble arm64 (read only) 2543900 2547500 3600 0.1
(read/write) 183073 183089 16 0.0
.bss 91409 91425 16 0.0
.text 2146880 2150480 3600 0.2
mbed lock-app CY8CPROTO_062_4343W+release (read/write) 2429544 2430440 896 0.0
.text 1392188 1393084 896 0.1
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1191959 1192823 864 0.1
text 817076 817928 852 0.1
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1139683 1140531 848 0.1
text 789128 789976 848 0.1
p6 all-clusters-app default (read/write) 2544464 2545920 1456 0.1
.text 1502728 1504184 1456 0.1
all-clusters-minimal-app default (read/write) 2489328 2490784 1456 0.1
.text 1447592 1449048 1456 0.1
light-app default (read/write) 2421240 2422696 1456 0.1
.text 1379504 1380960 1456 0.1
lock-app default (read/write) 2441576 2443032 1456 0.1
.text 1399840 1401296 1456 0.1
telink light-switch-app tlsr9518adk80d (read/write) 781628 782596 968 0.1
text 552550 553518 968 0.2
lighting-app tlsr9518adk80d (read/write) 801640 802616 976 0.1
text 569270 570242 972 0.2
Decreases (5 builds for cc13x2_26x2)
platform target config section b8e9ab1 4ed3d16 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read/write) 161904 161040 -864 -0.5
lock-ftd LP_CC2652R7 (read/write) 159456 158608 -848 -0.5
pump-app LP_CC2652R7 (read/write) 178924 178076 -848 -0.5
pump-controller-app LP_CC2652R7 (read/write) 188444 187588 -856 -0.5
shell LP_CC2652R7 (read/write) 165120 164264 -856 -0.5
Full report (30 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section b8e9ab1 4ed3d16 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 689863 690727 864 0.1
(read/write) 161904 161040 -864 -0.5
.bss 74660 74660 0 0.0
.data 3392 3392 0 0.0
.rodata 112279 112279 0 0.0
.text 577272 578136 864 0.1
all-clusters-minimal-app LP_CC2652R7 (read only) 640479 641335 856 0.1
(read/write) 158132 158132 0 0.0
.bss 73884 73884 0 0.0
.data 3332 3332 0 0.0
.rodata 89319 89319 0 0.0
.text 550840 551696 856 0.2
lock-ftd LP_CC2652R7 (read only) 683375 684223 848 0.1
(read/write) 159456 158608 -848 -0.5
.bss 72612 72612 0 0.0
.data 3256 3256 0 0.0
.rodata 98143 98143 0 0.0
.text 584748 585596 848 0.1
lock-mtd LP_CC2652R7 (read only) 632791 633647 856 0.1
(read/write) 145720 145720 0 0.0
.bss 68348 68348 0 0.0
.data 3256 3256 0 0.0
.rodata 98031 98031 0 0.0
.text 534268 535124 856 0.2
pump-app LP_CC2652R7 (read only) 664819 665667 848 0.1
(read/write) 178924 178076 -848 -0.5
.bss 72756 72756 0 0.0
.data 3292 3292 0 0.0
.rodata 86315 86315 0 0.0
.text 578020 578868 848 0.1
pump-controller-app LP_CC2652R7 (read only) 655403 656259 856 0.1
(read/write) 188444 187588 -856 -0.5
.bss 72860 72860 0 0.0
.data 3252 3252 0 0.0
.rodata 84211 84211 0 0.0
.text 570708 571564 856 0.1
shell LP_CC2652R7 (read only) 682142 682998 856 0.1
(read/write) 165120 164264 -856 -0.5
.bss 76956 76956 0 0.0
.data 3396 3396 0 0.0
.rodata 108878 108878 0 0.0
.text 572952 573808 856 0.1
cyw30739 light cyw930739m2evb_01 (read/write) 602546 603410 864 0.1
.app_xip_area 461492 462356 864 0.2
.bss 84008 84008 0 0.0
.data 732 732 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 599630 600494 864 0.1
.app_xip_area 458440 459304 864 0.2
.bss 84176 84176 0 0.0
.data 700 700 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 599374 600222 848 0.1
.app_xip_area 459300 460148 848 0.2
.bss 83140 83140 0 0.0
.data 616 616 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read only) 914968 916440 1472 0.2
(read/write) 133176 133176 0 0.0
.bss 131088 131088 0 0.0
.data 2088 2088 0 0.0
.text 914960 916432 1472 0.2
BRD4161A+rpc (read only) 949188 950644 1456 0.2
(read/write) 149868 149868 0 0.0
.bss 147576 147576 0 0.0
.data 2292 2292 0 0.0
.text 949180 950636 1456 0.2
BRD4161A+rs911x (read only) 790156 791612 1456 0.2
(read/write) 129460 129460 0 0.0
.bss 127364 127364 0 0.0
.data 2096 2096 0 0.0
.text 790148 791604 1456 0.2
lock-app BRD4161A+wf200 (read only) 958396 959244 848 0.1
(read/write) 128252 128252 0 0.0
.bss 126188 126188 0 0.0
.data 2064 2064 0 0.0
.text 958388 959236 848 0.1
window-app BRD4161A (read only) 900040 901512 1472 0.2
(read/write) 133264 133264 0 0.0
.bss 131176 131176 0 0.0
.data 2084 2084 0 0.0
.text 900032 901504 1472 0.2
esp32 all-clusters-app c3devkit (read only) 1007708 1008708 1000 0.1
(read/write) 1481786 1481786 0 0.0
.dram0.bss 69168 69168 0 0.0
.dram0.data 14656 14656 0 0.0
.flash.rodata 212536 212536 0 0.0
.flash.text 1007708 1008708 1000 0.1
.iram0.text 62902 62902 0 0.0
m5stack (read only) 1062479 1063479 1000 0.1
(read/write) 483928 483928 0 0.0
.dram0.bss 74688 74688 0 0.0
.dram0.data 34200 34200 0 0.0
.flash.rodata 243044 243044 0 0.0
.flash.text 1057095 1058095 1000 0.1
.iram0.text 123267 123267 0 0.0
k32w light k32w061+release (read/write) 653744 654592 848 0.1
.bss 70044 70044 0 0.0
.data 2004 2004 0 0.0
.text 575896 576744 848 0.1
lock k32w061+release (read/write) 714788 715652 864 0.1
.bss 70484 70484 0 0.0
.data 1976 1976 0 0.0
.text 636528 637392 864 0.1
linux chip-tool-no-interactive-ipv6only arm64 (read only) 9474604 9478204 3600 0.0
(read/write) 674257 674273 16 0.0
.bss 43681 43697 16 0.0
.data 1152 1152 0 0.0
.data.rel.ro 610696 610696 0 0.0
.dynamic 528 528 0 0.0
.got 14928 14928 0 0.0
.init 24 24 0 0.0
.init_array 192 192 0 0.0
.rodata 467548 467548 0 0.0
.text 7470052 7473652 3600 0.0
thermostat-no-ble arm64 (read only) 2543900 2547500 3600 0.1
(read/write) 183073 183089 16 0.0
.bss 91409 91425 16 0.0
.data 1512 1512 0 0.0
.data.rel.ro 82144 82144 0 0.0
.dynamic 528 528 0 0.0
.got 4992 4992 0 0.0
.init 24 24 0 0.0
.init_array 400 400 0 0.0
.rodata 160084 160084 0 0.0
.text 2146880 2150480 3600 0.2
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2429544 2430440 896 0.0
.bss 202692 202692 0 0.0
.data 5872 5872 0 0.0
.text 1392188 1393084 896 0.1
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1191959 1192823 864 0.1
bss 141362 141362 0 0.0
rodata 154600 154600 0 0.0
text 817076 817928 852 0.1
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1139683 1140531 848 0.1
bss 140579 140579 0 0.0
rodata 131092 131092 0 0.0
text 789128 789976 848 0.1
p6 all-clusters-app default (read/write) 2544464 2545920 1456 0.1
.bss 137120 137120 0 0.0
.data 2808 2808 0 0.0
.text 1502728 1504184 1456 0.1
all-clusters-minimal-app default (read/write) 2489328 2490784 1456 0.1
.bss 136328 136328 0 0.0
.data 2752 2752 0 0.0
.text 1447592 1449048 1456 0.1
light-app default (read/write) 2421240 2422696 1456 0.1
.bss 129432 129432 0 0.0
.data 2600 2600 0 0.0
.text 1379504 1380960 1456 0.1
lock-app default (read/write) 2441576 2443032 1456 0.1
.bss 129256 129256 0 0.0
.data 2576 2576 0 0.0
.text 1399840 1401296 1456 0.1
telink light-switch-app tlsr9518adk80d (read/write) 781628 782596 968 0.1
bss 70636 70636 0 0.0
noinit 40416 40416 0 0.0
text 552550 553518 968 0.2
lighting-app tlsr9518adk80d (read/write) 801640 802616 976 0.1
bss 70888 70888 0 0.0
noinit 40416 40416 0 0.0
text 569270 570242 972 0.2

@erjiaqing
Copy link
Contributor Author

erjiaqing commented Jun 13, 2022

Terminology
An oversized read request (transaction): A read request using more than the guaranteed (attribute or event) paths.
An oversized fabric: A fabric which either (1) have more read requests than the guaranteed number of read requests, or (2) the sum of (attribute or event) paths exceeds the guaranteed number of paths for the fabric.
PASE session: A session without an associated fabric index. They are counted as "fabric index 0". When we are iterating fabrics, all transactions on PASE session are counted to "fabric index 0", and fabric index 0 is counted.
CASE session: A session with an associated fabric index.
enough resources for handling a read request: We have enough free items in the path pool, and we have enough (in fact, 1) free read handlers.

Guaranteed resources:

  • Read request: 9 attribute paths, 9 event paths
  • Fabric: floor[(path pool size) / (fabric table size)] reads, floor[(path pool size) / (fabric table size)] * 9 {attribute|event} paths.
  • PASE sessions:
    • When fabric table is not full: the same as fabric
    • When fabric table is full: 0

Behavior

For an incoming read request, when we have enough resource for handling it, we always accept it regardless the actual resource usage.

Test Case: 1.3, Test Case 7, and assumed by all test cases.

The following test case all assumes we cannot handle it either we don't have enough free items in the path pool or we don't have enough free read handlers. Note: Base on the response code (and the branches in the code & conditions of the loops), we don't always discuss both cases.

For an oversized incoming requests:

  • If we don't have enough free items in the pool, it will receive "PathsExhausted" status code. (Test Case 1.1)
  • If we don't have enough free read handlers in the pool, it will receive "Busy" status code. (Test Case 1.2)
  • We don't check the actual fabric-level resource usage since the above two cases are exhausted.

For an incoming non-oversized request:

For non-oversized incoming read requests, we are not checking which resources are actually insufficient.

  • If it will make its fabric oversized (incl. its fabric is already oversized), it will receive "Busy" status code. (Test Case 3)
    • Note: there is a case when the fabric has an oversized read request, we won't evict it in this case. (Fabric level first come first serve), a Busy code should make the incoming read request retry later and the ongoing oversized read request are expected to be finished in a short time)

  • If it comes from a PASE session, and the fabric table is full it will receive "ResourceExhausted" status code. (Test Case 6)
    • or we will evict transactions from other fabric to handle it (Test Case 5)
  • There must be one oversized fabric (or we should be able to handle it if no fabrics are oversized (incl. the new read request)), for a fabric we will only evict read transactions from it if it is oversized (last branch in TranFabricForRead).
    • If (and only if) the fabric table on the device is full, we will evict read requests from "fabric 0" before any eviction read requests on other fabrics (Test Case 8, Test Case 10). If the fabric table on the device is not full, we don't have a special order for evicting read requests from "fabric 0" and other fabrics. (Test Case 9)
    • If it has one or more oversized read requests:
      • The latest oversized read request will be evicted. (Test Case 2)
    • If it has no oversized read requests:
      • The lastest read request will be evicted. (Test Case 4)
    • Iterate over the fabrics and repeat until we have enough resources for handling this read request.

src/app/InteractionModelEngine.cpp Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.cpp Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.cpp Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.cpp Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.cpp Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.h Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.h Outdated Show resolved Hide resolved
src/lib/core/CHIPConfig.h Outdated Show resolved Hide resolved
src/lib/core/CHIPConfig.h Show resolved Hide resolved
src/lib/core/CHIPConfig.h Outdated Show resolved Hide resolved
@github-actions
Copy link

github-actions bot commented Jun 15, 2022

PR #18884: Size comparison from 663ecf4 to fbeca4c

Increases above 0.2%:

platform target config section 663ecf4 fbeca4c change % change
linux bridge-app debug+rpc .text 1904434 1908354 3920 0.2
ota-provider-app debug .text 1929474 1933394 3920 0.2
Increases (41 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section 663ecf4 fbeca4c change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 657495 658399 904 0.1
.text 570328 571232 904 0.2
all-clusters-minimal-app LP_CC2652R7 (read only) 646035 646931 896 0.1
.text 555552 556448 896 0.2
lock-ftd LP_CC2652R7 (read only) 688467 689371 904 0.1
.text 589100 590004 904 0.2
lock-mtd LP_CC2652R7 (read only) 637883 638779 896 0.1
.text 538628 539524 896 0.2
pump-app LP_CC2652R7 (read only) 669683 670579 896 0.1
.text 582220 583116 896 0.2
pump-controller-app LP_CC2652R7 (read only) 660407 661311 904 0.1
.text 575020 575924 904 0.2
shell LP_CC2652R7 (read only) 686862 687758 896 0.1
.text 577136 578032 896 0.2
cyw30739 light cyw930739m2evb_01 (read/write) 611098 612002 904 0.1
.app_xip_area 467788 468692 904 0.2
lock cyw930739m2evb_01 (read/write) 608182 609094 912 0.1
.app_xip_area 464728 465640 912 0.2
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 614246 615142 896 0.1
.app_xip_area 471856 472752 896 0.2
efr32 lighting-app BRD4161A (read only) 920520 922216 1696 0.2
.text 920512 922208 1696 0.2
BRD4161A+rpc (read only) 956176 957856 1680 0.2
.text 956168 957848 1680 0.2
BRD4161A+rs911x (read only) 795636 797332 1696 0.2
.text 795628 797324 1696 0.2
lock-app BRD4161A+wf200 (read only) 963532 964428 896 0.1
.text 963524 964420 896 0.1
window-app BRD4161A (read only) 905392 907088 1696 0.2
.text 905384 907080 1696 0.2
esp32 all-clusters-app c3devkit (read only) 1011864 1012882 1018 0.1
.flash.text 1011864 1012882 1018 0.1
m5stack (read only) 1066047 1067191 1144 0.1
.flash.text 1060663 1061807 1144 0.1
k32w light k32w061+release (read/write) 657208 658104 896 0.1
.text 580672 581568 896 0.2
lock k32w061+release (read/write) 718820 719716 896 0.1
.text 641880 642776 896 0.1
linux all-clusters-app debug (read only) 2922617 2926569 3952 0.1
.rodata 258301 258333 32 0.0
.text 2488690 2492610 3920 0.2
all-clusters-minimal-app debug (read only) 2776465 2780417 3952 0.1
.rodata 259741 259773 32 0.0
.text 2343346 2347266 3920 0.2
bridge-app debug+rpc (read only) 2257873 2261825 3952 0.2
.rodata 193120 193152 32 0.0
.text 1904434 1908354 3920 0.2
chip-tool debug (read only) 9742221 9746173 3952 0.0
.rodata 505205 505237 32 0.0
.text 7803877 7807797 3920 0.1
chip-tool-no-interactive-ipv6only arm64 (read only) 9514172 9517868 3696 0.0
(read/write) 685617 685633 16 0.0
.bss 42625 42641 16 0.0
.rodata 468028 468060 32 0.0
.text 7477908 7481572 3664 0.0
lighting-app debug+rpc (read only) 2513201 2517153 3952 0.2
.rodata 208968 209000 32 0.0
.text 2135298 2139218 3920 0.2
lock-app debug (read only) 2451809 2455761 3952 0.2
.rodata 222824 222856 32 0.0
.text 2065522 2069442 3920 0.2
ota-provider-app debug (read only) 2289713 2293665 3952 0.2
.rodata 198904 198936 32 0.0
.text 1929474 1933394 3920 0.2
ota-requestor-app debug (read only) 2405457 2409409 3952 0.2
.rodata 202624 202656 32 0.0
.text 2033266 2037186 3920 0.2
shell debug (read only) 2600033 2603985 3952 0.2
.rodata 229266 229298 32 0.0
.text 2211570 2215490 3920 0.2
thermostat-no-ble arm64 (read only) 2564628 2568324 3696 0.1
.rodata 162668 162716 48 0.0
.text 2164112 2167760 3648 0.2
tv-app debug (read only) 3061225 3065161 3936 0.1
.rodata 244640 244672 32 0.0
.text 2630466 2634370 3904 0.1
tv-casting-app debug (read only) 5280393 5284329 3936 0.1
.rodata 340416 340448 32 0.0
.text 4595570 4599474 3904 0.1
mbed lock-app CY8CPROTO_062_4343W+release (read/write) 2434752 2435648 896 0.0
.text 1397396 1398292 896 0.1
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1196539 1197435 896 0.1
text 820704 821596 892 0.1
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1144587 1145483 896 0.1
text 793024 793916 892 0.1
p6 all-clusters-app default (read/write) 2549960 2551640 1680 0.1
.text 1508224 1509904 1680 0.1
all-clusters-minimal-app default (read/write) 2495904 2497584 1680 0.1
.text 1454168 1455848 1680 0.1
light-app default (read/write) 2426784 2428464 1680 0.1
.text 1385048 1386728 1680 0.1
lock-app default (read/write) 2447176 2448872 1696 0.1
.text 1405440 1407136 1696 0.1
telink light-switch-app tlsr9518adk80d (read/write) 786720 787704 984 0.1
text 557646 558628 982 0.2
lighting-app tlsr9518adk80d (read/write) 806708 807684 976 0.1
text 574338 575318 980 0.2
Decreases (6 builds for cc13x2_26x2, esp32)
platform target config section 663ecf4 fbeca4c change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read/write) 193320 192416 -904 -0.5
lock-ftd LP_CC2652R7 (read/write) 152452 151548 -904 -0.6
pump-app LP_CC2652R7 (read/write) 172124 171228 -896 -0.5
pump-controller-app LP_CC2652R7 (read/write) 181528 180624 -904 -0.5
shell LP_CC2652R7 (read/write) 159448 158552 -896 -0.6
esp32 all-clusters-app m5stack (read/write) 484776 484768 -8 -0.0
.flash.rodata 243740 243732 -8 -0.0
Full report (41 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section 663ecf4 fbeca4c change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 657495 658399 904 0.1
(read/write) 193320 192416 -904 -0.5
.bss 73708 73708 0 0.0
.data 3380 3380 0 0.0
.rodata 86855 86855 0 0.0
.text 570328 571232 904 0.2
all-clusters-minimal-app LP_CC2652R7 (read only) 646035 646931 896 0.1
(read/write) 157260 157260 0 0.0
.bss 72988 72988 0 0.0
.data 3356 3356 0 0.0
.rodata 90163 90163 0 0.0
.text 555552 556448 896 0.2
lock-ftd LP_CC2652R7 (read only) 688467 689371 904 0.1
(read/write) 152452 151548 -904 -0.6
.bss 70700 70700 0 0.0
.data 3280 3280 0 0.0
.rodata 98883 98883 0 0.0
.text 589100 590004 904 0.2
lock-mtd LP_CC2652R7 (read only) 637883 638779 896 0.1
(read/write) 143832 143832 0 0.0
.bss 66436 66436 0 0.0
.data 3280 3280 0 0.0
.rodata 98763 98763 0 0.0
.text 538628 539524 896 0.2
pump-app LP_CC2652R7 (read only) 669683 670579 896 0.1
(read/write) 172124 171228 -896 -0.5
.bss 70820 70820 0 0.0
.data 3316 3316 0 0.0
.rodata 86979 86979 0 0.0
.text 582220 583116 896 0.2
pump-controller-app LP_CC2652R7 (read only) 660407 661311 904 0.1
(read/write) 181528 180624 -904 -0.5
.bss 70948 70948 0 0.0
.data 3276 3276 0 0.0
.rodata 84903 84903 0 0.0
.text 575020 575924 904 0.2
shell LP_CC2652R7 (read only) 686862 687758 896 0.1
(read/write) 159448 158552 -896 -0.6
.bss 76004 76004 0 0.0
.data 3384 3384 0 0.0
.rodata 109414 109414 0 0.0
.text 577136 578032 896 0.2
cyw30739 light cyw930739m2evb_01 (read/write) 611098 612002 904 0.1
.app_xip_area 467788 468692 904 0.2
.bss 86232 86232 0 0.0
.data 764 764 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 608182 609094 912 0.1
.app_xip_area 464728 465640 912 0.2
.bss 86408 86408 0 0.0
.data 732 732 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 614246 615142 896 0.1
.app_xip_area 471856 472752 896 0.2
.bss 85400 85400 0 0.0
.data 672 672 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read only) 920520 922216 1696 0.2
(read/write) 132400 132400 0 0.0
.bss 130280 130280 0 0.0
.data 2116 2116 0 0.0
.text 920512 922208 1696 0.2
BRD4161A+rpc (read only) 956176 957856 1680 0.2
(read/write) 149272 149272 0 0.0
.bss 146952 146952 0 0.0
.data 2320 2320 0 0.0
.text 956168 957848 1680 0.2
BRD4161A+rs911x (read only) 795636 797332 1696 0.2
(read/write) 128672 128672 0 0.0
.bss 126548 126548 0 0.0
.data 2124 2124 0 0.0
.text 795628 797324 1696 0.2
lock-app BRD4161A+wf200 (read only) 963532 964428 896 0.1
(read/write) 129012 129012 0 0.0
.bss 126924 126924 0 0.0
.data 2088 2088 0 0.0
.text 963524 964420 896 0.1
window-app BRD4161A (read only) 905392 907088 1696 0.2
(read/write) 132472 132472 0 0.0
.bss 130360 130360 0 0.0
.data 2108 2108 0 0.0
.text 905384 907080 1696 0.2
esp32 all-clusters-app c3devkit (read only) 1011864 1012882 1018 0.1
(read/write) 1482666 1482666 0 0.0
.dram0.bss 69344 69344 0 0.0
.dram0.data 14656 14656 0 0.0
.flash.rodata 213240 213240 0 0.0
.flash.text 1011864 1012882 1018 0.1
.iram0.text 62902 62902 0 0.0
m5stack (read only) 1066047 1067191 1144 0.1
(read/write) 484776 484768 -8 -0.0
.dram0.bss 74864 74864 0 0.0
.dram0.data 34176 34176 0 0.0
.flash.rodata 243740 243732 -8 -0.0
.flash.text 1060663 1061807 1144 0.1
.iram0.text 123267 123267 0 0.0
k32w light k32w061+release (read/write) 657208 658104 896 0.1
.bss 68708 68708 0 0.0
.data 2028 2028 0 0.0
.text 580672 581568 896 0.2
lock k32w061+release (read/write) 718820 719716 896 0.1
.bss 69140 69140 0 0.0
.data 2000 2000 0 0.0
.text 641880 642776 896 0.1
linux all-clusters-app debug (read only) 2922617 2926569 3952 0.1
(read/write) 188232 188232 0 0.0
.bss 95648 95648 0 0.0
.data 2080 2080 0 0.0
.data.rel.ro 84296 84296 0 0.0
.dynamic 608 608 0 0.0
.got 4544 4544 0 0.0
.init 27 27 0 0.0
.init_array 1024 1024 0 0.0
.rodata 258301 258333 32 0.0
.text 2488690 2492610 3920 0.2
all-clusters-minimal-app debug (read only) 2776465 2780417 3952 0.1
(read/write) 180040 180040 0 0.0
.bss 94944 94944 0 0.0
.data 2016 2016 0 0.0
.data.rel.ro 76936 76936 0 0.0
.dynamic 608 608 0 0.0
.got 4496 4496 0 0.0
.init 27 27 0 0.0
.init_array 1024 1024 0 0.0
.rodata 259741 259773 32 0.0
.text 2343346 2347266 3920 0.2
bridge-app debug+rpc (read only) 2257873 2261825 3952 0.2
(read/write) 157880 157880 0 0.0
.bss 81920 81920 0 0.0
.data 3856 3856 0 0.0
.data.rel.ro 66344 66344 0 0.0
.dynamic 608 608 0 0.0
.got 4400 4400 0 0.0
.init 27 27 0 0.0
.init_array 720 720 0 0.0
.rodata 193120 193152 32 0.0
.text 1904434 1908354 3920 0.2
chip-tool debug (read only) 9742221 9746173 3952 0.0
(read/write) 619424 619424 0 0.0
.bss 24352 24352 0 0.0
.data 1088 1088 0 0.0
.data.rel.ro 587688 587688 0 0.0
.dynamic 624 624 0 0.0
.got 5008 5008 0 0.0
.init 27 27 0 0.0
.init_array 632 632 0 0.0
.rodata 505205 505237 32 0.0
.text 7803877 7807797 3920 0.1
chip-tool-no-interactive-ipv6only arm64 (read only) 9514172 9517868 3696 0.0
(read/write) 685617 685633 16 0.0
.bss 42625 42641 16 0.0
.data 1152 1152 0 0.0
.data.rel.ro 623120 623120 0 0.0
.dynamic 528 528 0 0.0
.got 14904 14904 0 0.0
.init 24 24 0 0.0
.init_array 192 192 0 0.0
.rodata 468028 468060 32 0.0
.text 7477908 7481572 3664 0.0
lighting-app debug+rpc (read only) 2513201 2517153 3952 0.2
(read/write) 162992 162992 0 0.0
.bss 83520 83520 0 0.0
.data 2096 2096 0 0.0
.data.rel.ro 71496 71496 0 0.0
.dynamic 608 608 0 0.0
.got 4432 4432 0 0.0
.init 27 27 0 0.0
.init_array 808 808 0 0.0
.rodata 208968 209000 32 0.0
.text 2135298 2139218 3920 0.2
lock-app debug (read only) 2451809 2455761 3952 0.2
(read/write) 157584 157584 0 0.0
.bss 81888 81888 0 0.0
.data 1648 1648 0 0.0
.data.rel.ro 68184 68184 0 0.0
.dynamic 608 608 0 0.0
.got 4432 4432 0 0.0
.init 27 27 0 0.0
.init_array 776 776 0 0.0
.rodata 222824 222856 32 0.0
.text 2065522 2069442 3920 0.2
ota-provider-app debug (read only) 2289713 2293665 3952 0.2
(read/write) 151720 151720 0 0.0
.bss 81568 81568 0 0.0
.data 1880 1880 0 0.0
.data.rel.ro 62456 62456 0 0.0
.dynamic 608 608 0 0.0
.got 4496 4496 0 0.0
.init 27 27 0 0.0
.init_array 672 672 0 0.0
.rodata 198904 198936 32 0.0
.text 1929474 1933394 3920 0.2
ota-requestor-app debug (read only) 2405457 2409409 3952 0.2
(read/write) 158464 158464 0 0.0
.bss 83872 83872 0 0.0
.data 2168 2168 0 0.0
.data.rel.ro 66568 66568 0 0.0
.dynamic 608 608 0 0.0
.got 4488 4488 0 0.0
.init 27 27 0 0.0
.init_array 728 728 0 0.0
.rodata 202624 202656 32 0.0
.text 2033266 2037186 3920 0.2
shell debug (read only) 2600033 2603985 3952 0.2
(read/write) 219024 219024 0 0.0
.bss 134440 134440 0 0.0
.data 1296 1296 0 0.0
.data.rel.ro 77544 77544 0 0.0
.dynamic 608 608 0 0.0
.got 4176 4176 0 0.0
.init 27 27 0 0.0
.init_array 928 928 0 0.0
.rodata 229266 229298 32 0.0
.text 2211570 2215490 3920 0.2
thermostat-no-ble arm64 (read only) 2564628 2568324 3696 0.1
(read/write) 191521 191521 0 0.0
.bss 99361 99361 0 0.0
.data 1672 1672 0 0.0
.data.rel.ro 82432 82432 0 0.0
.dynamic 528 528 0 0.0
.got 5040 5040 0 0.0
.init 24 24 0 0.0
.init_array 400 400 0 0.0
.rodata 162668 162716 48 0.0
.text 2164112 2167760 3648 0.2
tv-app debug (read only) 3061225 3065161 3936 0.1
(read/write) 288992 288992 0 0.0
.bss 199144 199144 0 0.0
.data 4784 4784 0 0.0
.data.rel.ro 78624 78624 0 0.0
.dynamic 608 608 0 0.0
.got 4848 4848 0 0.0
.init 27 27 0 0.0
.init_array 944 944 0 0.0
.rodata 244640 244672 32 0.0
.text 2630466 2634370 3904 0.1
tv-casting-app debug (read only) 5280393 5284329 3936 0.1
(read/write) 229264 229264 0 0.0
.bss 87976 87976 0 0.0
.data 2512 2512 0 0.0
.data.rel.ro 132552 132552 0 0.0
.dynamic 608 608 0 0.0
.got 4712 4712 0 0.0
.init 27 27 0 0.0
.init_array 864 864 0 0.0
.rodata 340416 340448 32 0.0
.text 4595570 4599474 3904 0.1
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2434752 2435648 896 0.0
.bss 208148 208148 0 0.0
.data 5864 5864 0 0.0
.text 1397396 1398292 896 0.1
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1196539 1197435 896 0.1
bss 141554 141554 0 0.0
rodata 155428 155428 0 0.0
text 820704 821596 892 0.1
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1144587 1145483 896 0.1
bss 140794 140794 0 0.0
rodata 131956 131956 0 0.0
text 793024 793916 892 0.1
p6 all-clusters-app default (read/write) 2549960 2551640 1680 0.1
.bss 143344 143344 0 0.0
.data 2800 2800 0 0.0
.text 1508224 1509904 1680 0.1
all-clusters-minimal-app default (read/write) 2495904 2497584 1680 0.1
.bss 142608 142608 0 0.0
.data 2776 2776 0 0.0
.text 1454168 1455848 1680 0.1
light-app default (read/write) 2426784 2428464 1680 0.1
.bss 134688 134688 0 0.0
.data 2624 2624 0 0.0
.text 1385048 1386728 1680 0.1
lock-app default (read/write) 2447176 2448872 1696 0.1
.bss 134512 134512 0 0.0
.data 2600 2600 0 0.0
.text 1405440 1407136 1696 0.1
telink light-switch-app tlsr9518adk80d (read/write) 786720 787704 984 0.1
bss 69836 69836 0 0.0
noinit 40416 40416 0 0.0
text 557646 558628 982 0.2
lighting-app tlsr9518adk80d (read/write) 806708 807684 976 0.1
bss 70088 70088 0 0.0
noinit 40416 40416 0 0.0
text 574338 575318 980 0.2

Copy link
Contributor

@bzbarsky-apple bzbarsky-apple left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! This is a very nice improvement!

src/app/InteractionModelEngine.cpp Outdated Show resolved Hide resolved
src/app/InteractionModelEngine.cpp Outdated Show resolved Hide resolved
Copy link
Contributor

@andy31415 andy31415 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Open for 20 days and Boris went through a thorough review based on history. Approvig.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Figure out what read path count enforcement should look like. Implement minimas for read requests.
3 participants