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

Decrease size for interaction model object pools (use 1/2 the current value) #11044

Merged
merged 2 commits into from
Oct 28, 2021

Conversation

lucicop
Copy link
Contributor

@lucicop lucicop commented Oct 27, 2021

Problem

Interaction model pools occupy a lot of space and could be optimized for certain projects.

Change overview

This PR reduces the number of buffer pools allocated for each class by a factor of 2.

Testing

This was tested by establishing a BLE secure session, commissioning on Thread and running a series of zcl interactions with the device.

@lucicop
Copy link
Contributor Author

lucicop commented Oct 27, 2021

#7967

@bzbarsky-apple @yunhanw-google @erjiaqing : do you think using 2 instead of 4 can work for simple use cases ?

@github-actions
Copy link

github-actions bot commented Oct 27, 2021

PR #11044: Size comparison from 22f8115 to 010a5d7

Increases (3 builds for esp32, qpg)
platform target config section 22f8115 010a5d7 change % change
esp32 all-clusters-app m5stack (read only) 906891 906967 76 0.0
.flash.text 906891 906967 76 0.0
qpg lighting-app qpg6100+debug (read only) 491272 491280 8 0.0
.text 485952 485960 8 0.0
lock-app qpg6100+debug (read only) 467492 467500 8 0.0
.text 462172 462180 8 0.0
Decreases (2 builds for qpg)
platform target config section 22f8115 010a5d7 change % change
qpg lighting-app qpg6100+debug .bss 52416 50968 -1448 -2.8
lock-app qpg6100+debug .bss 51368 49920 -1448 -2.8
Full report (36 builds for efr32, esp32, k32w, linux, mbed, nrfconnect, p6, qpg, telink)
platform target config section 22f8115 010a5d7 change % change
efr32 lighting-app BRD4161A (read only) 737104 737104 0 0.0
(read/write) 115444 115444 0 0.0
.bss 113692 113692 0 0.0
.data 1752 1752 0 0.0
.text 737096 737096 0 0.0
BRD4161A+rpc (read only) 724536 724536 0 0.0
(read/write) 132052 132052 0 0.0
.bss 130196 130196 0 0.0
.data 1852 1852 0 0.0
.text 724528 724528 0 0.0
lock-app BRD4161A (read only) 716368 716368 0 0.0
(read/write) 113260 113260 0 0.0
.bss 111548 111548 0 0.0
.data 1712 1712 0 0.0
.text 716360 716360 0 0.0
window-app BRD4161A (read only) 717276 717276 0 0.0
(read/write) 113584 113584 0 0.0
.bss 111868 111868 0 0.0
.data 1716 1716 0 0.0
.text 717268 717268 0 0.0
esp32 all-clusters-app c3devkit (read only) 875790 875790 0 0.0
(read/write) 1306456 1306456 0 0.0
.dram0.bss 58240 58240 0 0.0
.dram0.data 16464 16464 0 0.0
.flash.rodata 198520 198520 0 0.0
.flash.text 875790 875790 0 0.0
.iram0.text 57564 57564 0 0.0
m5stack (read only) 906891 906967 76 0.0
(read/write) 426264 426264 0 0.0
.dram0.bss 60752 60752 0 0.0
.dram0.data 32084 32084 0 0.0
.flash.rodata 207264 207264 0 0.0
.flash.text 906891 906967 76 0.0
.iram0.text 125115 125115 0 0.0
k32w lighting-app k32w061+se05x+release (read/write) 701096 701096 0 0.0
.bss 78720 78720 0 0.0
.data 1900 1900 0 0.0
.text 614676 614676 0 0.0
lock-app k32w061+debug (read/write) 592900 592900 0 0.0
.bss 69196 69196 0 0.0
.data 1864 1864 0 0.0
.text 516040 516040 0 0.0
shell k32w061+debug (read/write) 425236 425236 0 0.0
.bss 63256 63256 0 0.0
.data 672 672 0 0.0
.text 359604 359604 0 0.0
linux all-clusters-app debug (read only) 1634209 1634209 0 0.0
(read/write) 117408 117408 0 0.0
.bss 50320 50320 0 0.0
.data 978 978 0 0.0
.data.rel.ro 60864 60864 0 0.0
.dynamic 592 592 0 0.0
.got 4088 4088 0 0.0
.init 27 27 0 0.0
.init_array 520 520 0 0.0
.rodata 135541 135541 0 0.0
.text 1366930 1366930 0 0.0
bridge-app debug+rpc (read only) 1275693 1275693 0 0.0
(read/write) 85096 85096 0 0.0
.bss 51856 51856 0 0.0
.data 976 976 0 0.0
.data.rel.ro 27272 27272 0 0.0
.dynamic 592 592 0 0.0
.got 3952 3952 0 0.0
.init 27 27 0 0.0
.init_array 400 400 0 0.0
.rodata 110684 110684 0 0.0
.text 1069669 1069669 0 0.0
chip-tool debug (read only) 4149509 4149509 0 0.0
(read/write) 120224 120224 0 0.0
.bss 17680 17680 0 0.0
.data 1584 1584 0 0.0
.data.rel.ro 95552 95552 0 0.0
.dynamic 592 592 0 0.0
.got 4368 4368 0 0.0
.init 27 27 0 0.0
.init_array 424 424 0 0.0
.rodata 210704 210704 0 0.0
.text 3680421 3680421 0 0.0
lighting-app debug+rpc (read only) 1527209 1527209 0 0.0
(read/write) 101520 101520 0 0.0
.bss 41176 41176 0 0.0
.data 1106 1106 0 0.0
.data.rel.ro 53968 53968 0 0.0
.dynamic 608 608 0 0.0
.got 4112 4112 0 0.0
.init 27 27 0 0.0
.init_array 528 528 0 0.0
.rodata 127889 127889 0 0.0
.text 1267298 1267298 0 0.0
ota-provider-app debug (read only) 1234753 1234753 0 0.0
(read/write) 67776 67776 0 0.0
.bss 37440 37440 0 0.0
.data 752 752 0 0.0
.data.rel.ro 24488 24488 0 0.0
.dynamic 592 592 0 0.0
.got 4016 4016 0 0.0
.init 27 27 0 0.0
.init_array 440 440 0 0.0
.rodata 110984 110984 0 0.0
.text 1027810 1027810 0 0.0
ota-requestor-app debug (read only) 1292033 1292033 0 0.0
(read/write) 76264 76264 0 0.0
.bss 44960 44960 0 0.0
.data 816 816 0 0.0
.data.rel.ro 25352 25352 0 0.0
.dynamic 592 592 0 0.0
.got 3984 3984 0 0.0
.init 27 27 0 0.0
.init_array 512 512 0 0.0
.rodata 127904 127904 0 0.0
.text 1066530 1066530 0 0.0
shell debug (read only) 778361 778361 0 0.0
(read/write) 57376 57376 0 0.0
.bss 16136 16136 0 0.0
.data 242 242 0 0.0
.data.rel.ro 36496 36496 0 0.0
.dynamic 592 592 0 0.0
.got 3528 3528 0 0.0
.init 27 27 0 0.0
.init_array 336 336 0 0.0
.rodata 76527 76527 0 0.0
.text 600706 600706 0 0.0
tv-app debug (read only) 1753753 1753753 0 0.0
(read/write) 281432 281432 0 0.0
.bss 215568 215568 0 0.0
.data 2032 2032 0 0.0
.data.rel.ro 58192 58192 0 0.0
.dynamic 592 592 0 0.0
.got 4408 4408 0 0.0
.init 27 27 0 0.0
.init_array 608 608 0 0.0
.rodata 152984 152984 0 0.0
.text 1459058 1459058 0 0.0
mbed all-clusters-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2288664 2288664 0 0.0
.bss 179612 179612 0 0.0
.data 5192 5192 0 0.0
.heap 851640 851640 0 0.0
.text 1251264 1251264 0 0.0
lighting-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2255896 2255896 0 0.0
.bss 171060 171060 0 0.0
.data 5464 5464 0 0.0
.heap 859920 859920 0 0.0
.text 1218496 1218496 0 0.0
lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2233928 2233928 0 0.0
.bss 169988 169988 0 0.0
.data 5432 5432 0 0.0
.heap 861024 861024 0 0.0
.text 1196528 1196528 0 0.0
pigweed-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 1139680 1139680 0 0.0
.bss 11760 11760 0 0.0
.data 4360 4360 0 0.0
.heap 1020328 1020328 0 0.0
.text 103064 103064 0 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 (read/write) 862967 862967 0 0.0
bss 112136 112136 0 0.0
rodata 97504 97504 0 0.0
text 577704 577704 0 0.0
nrf52840dk_nrf52840+rpc (read/write) 823807 823807 0 0.0
bss 108380 108380 0 0.0
rodata 88280 88280 0 0.0
text 550896 550896 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 788006 788006 0 0.0
bss 113512 113512 0 0.0
rodata 92744 92744 0 0.0
text 507176 507176 0 0.0
lock-app nrf52840dk_nrf52840 (read/write) 839911 839911 0 0.0
bss 111208 111208 0 0.0
rodata 93904 93904 0 0.0
text 559264 559264 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 764954 764954 0 0.0
bss 112584 112584 0 0.0
rodata 89164 89164 0 0.0
text 488728 488728 0 0.0
pigweed-app nrf52840dk_nrf52840 (read/write) 497339 497339 0 0.0
bss 51824 51824 0 0.0
rodata 45776 45776 0 0.0
text 339456 339456 0 0.0
pump-app nrf52840dk_nrf52840 (read/write) 844311 844311 0 0.0
bss 111308 111308 0 0.0
rodata 95104 95104 0 0.0
text 562368 562368 0 0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 839631 839631 0 0.0
bss 111208 111208 0 0.0
rodata 93880 93880 0 0.0
text 559008 559008 0 0.0
shell nrf52840dk_nrf52840 (read/write) 776579 776579 0 0.0
bss 109072 109072 0 0.0
rodata 72536 72536 0 0.0
text 520368 520368 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 691634 691634 0 0.0
bss 110056 110056 0 0.0
rodata 67180 67180 0 0.0
text 440980 440980 0 0.0
p6 lock-app default (read/write) 2169104 2169104 0 0.0
.bss 67184 67184 0 0.0
.data 2416 2416 0 0.0
.heap 963744 963744 0 0.0
.text 1127368 1127368 0 0.0
qpg lighting-app qpg6100+debug (read only) 491272 491280 8 0.0
(read/write) 114144 114144 0 0.0
.bss 52416 50968 -1448 -2.8
.data 1000 1000 0 0.0
.text 485952 485960 8 0.0
lock-app qpg6100+debug (read only) 467492 467500 8 0.0
(read/write) 114140 114140 0 0.0
.bss 51368 49920 -1448 -2.8
.data 956 956 0 0.0
.text 462172 462180 8 0.0
persistent-storage-app qpg6100+debug (read only) 155220 155220 0 0.0
(read/write) 114140 114140 0 0.0
.bss 27752 27752 0 0.0
.data 372 372 0 0.0
.text 149900 149900 0 0.0
telink lighting-app tlsr9518adk80d (read/write) 664678 664678 0 0.0
bss 69944 69944 0 0.0
noinit 33216 33216 0 0.0
text 458278 458278 0 0.0

@andy31415 andy31415 changed the title Optimize memory for interaction model object pools Decrease size for interaction model object pools (use 1/2 the current value) Oct 27, 2021
@andy31415
Copy link
Contributor

@lucicop - are these small values a good default? It seems we may want to make this platform dependent - I imagine large devices (darwin, linux, iOS, android) will want large pools or use heap and smaller devices may want minimal sizes.

@github-actions
Copy link

Size increase report for "gn_qpg-example-build" from 22f8115

File Section File VM
chip-qpg6100-lighting-example.out .heap 0 1448
chip-qpg6100-lighting-example.out .text 8 8
chip-qpg6100-lighting-example.out .bss 0 -1448
Full report output
BLOAT REPORT

Files found only in the build output:
    report.csv

Comparing ./master_artifact/chip-qpg6100-lighting-example.out and ./pull_artifact/chip-qpg6100-lighting-example.out:

sections,vmsize,filesize
.debug_loc,0,1975
.heap,1448,0
.debug_ranges,0,536
.debug_info,0,84
.text,8,8
[Unmapped],0,-8
.debug_frame,0,-12
.debug_line,0,-119
.bss,-1448,0

Comparing ./master_artifact/chip-qpg6100-lighting-example.out.map and ./pull_artifact/chip-qpg6100-lighting-example.out.map:

BLOAT EXECUTION FAILED WITH CODE 1:
bloaty: unknown file type for file './pull_artifact/chip-qpg6100-lighting-example.out.map'


@woody-apple
Copy link
Contributor

Fast tracking given platform maintainer, doing platform work.

@bzbarsky-apple
Copy link
Contributor

It seems we may want to make this platform dependent

@andy31415 This PR is just changing the values on the qpg platform.

@andy31415
Copy link
Contributor

It seems we may want to make this platform dependent

@andy31415 This PR is just changing the values on the qpg platform.

I missed that. Fully agree with fast track in this case.

@andy31415 andy31415 merged commit 7e79ec3 into project-chip:master Oct 28, 2021
JasonLiuZhuoCheng pushed a commit to JasonLiuZhuoCheng/connectedhomeip that referenced this pull request Oct 28, 2021
… value) (project-chip#11044)

* Optimize memory for interaction model object pools

* Update some pool values per specs minima
PSONALl pushed a commit to PSONALl/connectedhomeip that referenced this pull request Dec 3, 2021
… value) (project-chip#11044)

* Optimize memory for interaction model object pools

* Update some pool values per specs minima
@lucicop lucicop deleted the optimize_inter_model branch March 9, 2022 10:48
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.

6 participants