Skip to content

Conversation

@ijon
Copy link
Collaborator

@ijon ijon commented Jul 13, 2024

Preserialize table's split boundaries the same way table partitions are. The size of both depend on the same variable: number of shards in the table, but TablePartitions was preserialized (and cached) while Table.SplitBoundaries wasn't. Preserializing all potentially huge parts of DescribeSchemeResult message before it gets to the interconnect saves interconnect actors additional serialization costs. And when partitioning of the huge tables goes through the period of a rapid change that additional serialization causes interconnect to overload.

Single shortcoming though: preserialized SplitBoundary is not used (cannot be used) when boundaries of the index tables are requested through describe request on table index.

#6673
KIKIMR-21686

Changelog category

  • Not for changelog
@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@ijon ijon linked an issue Jul 15, 2024 that may be closed by this pull request
@ijon ijon requested a review from CyberROFL July 15, 2024 17:23
CyberROFL
CyberROFL previously approved these changes Jul 15, 2024
@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

Preserialize table's split boundaries the same way table partitions are. The size of both depend on the same variable: number of shards in the table, but TablePartitions was preserialized (and cached) while Table.SplitBoundaries wasn't. Preserializing all potentially huge parts of DescribeSchemeResult message before it gets to the interconnect saves interconnect actors additional serialization costs. And when partitioning of the huge tables goes through the period of a rapid change that additional serialization causes interconnect to overload. Single shortcoming though: preserialized SplitBoundary is not used (cannot be used) when boundaries of the index tables are requested through describe request on table index. KIKIMR-21686
@ijon ijon force-pushed the fix-schemeshard-preserialize-splitboundary branch from aa8d643 to adf50a1 Compare July 16, 2024 09:33
@github-actions
Copy link

github-actions bot commented Jul 16, 2024

2024-07-16 09:43:43 UTC Pre-commit check for 78bb215 has started.
2024-07-16 09:46:59 UTC Build+Tests linux-x86_64-release-clang14 is running...
🟢 2024-07-16 09:54:34 UTC Build successful.

@github-actions
Copy link

github-actions bot commented Jul 16, 2024

2024-07-16 09:49:50 UTC Pre-commit check for 78bb215 has started.
2024-07-16 09:52:31 UTC Build+Tests linux-x86_64-relwithdebinfo is running...
🟢 2024-07-16 11:43:22 UTC Build successful.
🔴 2024-07-16 11:51:06 UTC Some tests failed, follow the links below.

Test history | Test log

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
38204 32960 0 5 5221 18

🟢 2024-07-16 11:51:50 UTC ydbd size 8.0 GiB changed* by +37.4 KiB, which is < 100.0 KiB vs main: OK

ydbd size dash main: 457b2b4 merge: 78bb215 diff diff %
ydbd size 8 642 821 000 Bytes 8 642 859 264 Bytes +37.4 KiB +0.000%
ydbd stripped size 470 528 448 Bytes 470 530 112 Bytes +1.6 KiB +0.000%

*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation

@github-actions
Copy link

github-actions bot commented Jul 16, 2024

2024-07-16 09:55:35 UTC Pre-commit check for 78bb215 has started.
2024-07-16 09:58:53 UTC Build+Tests linux-x86_64-release-asan is running...
🟢 2024-07-16 12:07:09 UTC Build successful.
🔴 2024-07-16 12:09:08 UTC Some tests failed, follow the links below.

Test history | Test log

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
9696 9111 0 82 325 178

🟢 2024-07-16 12:09:50 UTC ydbd size 5.2 GiB changed* by +85.8 KiB, which is < 100.0 KiB vs main: OK

ydbd size dash main: 457b2b4 merge: 78bb215 diff diff %
ydbd size 5 548 952 816 Bytes 5 549 040 696 Bytes +85.8 KiB +0.002%
ydbd stripped size 1 194 957 904 Bytes 1 194 961 424 Bytes +3.4 KiB +0.000%

*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation

@ijon ijon merged commit 83a86c2 into ydb-platform:main Jul 16, 2024
ijon added a commit to ijon/ydb that referenced this pull request Jul 18, 2024
…b-platform#6648) merged 83a86c2 from main Preserialize table's split boundaries the same way table partitions are. The size of both depend on the same variable: number of shards in the table, but TablePartitions was preserialized (and cached) while Table.SplitBoundaries wasn't. Preserializing all potentially huge parts of DescribeSchemeResult message before it gets to the interconnect saves interconnect actors additional serialization costs. And when partitioning of the huge tables goes through the period of a rapid change that additional serialization causes interconnect to overload. Single shortcoming though: preserialized SplitBoundary is not used (cannot be used) when boundaries of the index tables are requested through describe request on table index. KIKIMR-21686
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

2 participants