<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/library/cpp/yt/misc, branch main</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=main</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2026-06-06T21:16:49Z</updated>
<entry>
<title>Cache process/thread id getters and use them in TError origin capture</title>
<updated>2026-06-06T21:16:49Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-06-06T20:52:00Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=f10c7206fb31af8057446bceef9707aabaa9456e'/>
<id>urn:sha1:f10c7206fb31af8057446bceef9707aabaa9456e</id>
<content type='text'>
## Motivation
Profiling the YT master Automaton thread showed TOriginAttributes::Capture (run on every non-OK TError) spending ~60% of its time in a getpid() syscall — uncached on glibc &gt;= 2.25. NYT::GetCurrentThreadId() (gettid) feeds hot thread-affinity / log-manager checks on the same thread.

## Changes
- New library/cpp/yt/system/process_id.* with cached GetProcessId(); GetSystemThreadId() now caches the kernel tid in TLS. Both caches reset in the child after fork.
- Moved thread_name.{h,cpp} from misc to system.
- Removed GetCurrentProcessId/GetCurrentThreadId shims from yt/yt/core/misc/proc.{h,cpp}; migrated all callers to NYT::GetProcessId / NYT::GetSystemThreadId.
- TOriginAttributes::Capture uses the cached getters; recorded Tid is now the real kernel tid (matches perf/ps).
- Added microbenchmarks (library/cpp/yt/system/benchmarks, yt/yt/core/benchmarks/error.cpp).

## Microbenchmarks (release)
| | before | after |
|---|---|---|
| getpid | 101 ns | 0.33 ns |
| gettid | 102 ns | 1.64 ns |
| Capture | 161 ns | 50 ns |
| failed TError | 221 ns | 74 ns |
commit_hash:ee37ae57d61a5a2dd33daee935270f4bb93b7ff9
</content>
</entry>
<entry>
<title>Add Abseil-compatible support hashers</title>
<updated>2026-04-27T12:16:34Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-04-27T11:10:55Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=ac1b929087542a400ab0f55f7263c95544baa0b8'/>
<id>urn:sha1:ac1b929087542a400ab0f55f7263c95544baa0b8</id>
<content type='text'>
commit_hash:2d2808f61599fcfea314ad660585e984d50ffbb3
</content>
</entry>
<entry>
<title>YT-27872: Refactor BIND to fix ODR violations</title>
<updated>2026-04-03T12:52:56Z</updated>
<author>
<name>dann239</name>
<email>dann239@yandex-team.com</email>
</author>
<published>2026-04-03T12:15:57Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=57a36bc0bb183d5118c335e84ac02a4f61e257ef'/>
<id>urn:sha1:57a36bc0bb183d5118c335e84ac02a4f61e257ef</id>
<content type='text'>
commit_hash:25c6545fed2bffe20f7a008a218b9245896926ec
</content>
</entry>
<entry>
<title>YT-18571: Drop YT_ATTRIBUTE_NO_UNIQUE_ADDRESS in favor of Y_NO_UNIQUE_ADDRESS</title>
<updated>2026-03-23T11:26:18Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-03-23T10:39:31Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=db3520530fe5ae9f72f156178374fb6d29b5022f'/>
<id>urn:sha1:db3520530fe5ae9f72f156178374fb6d29b5022f</id>
<content type='text'>
commit_hash:c574736c9cbb7c6da6502dc751214d8d7f343568
</content>
</entry>
<entry>
<title>YT-18571: Drop YT_ATTRIBUTE_NO_SANITIZE_ADDRESS in favor of Y_NO_SANITIZE("address")</title>
<updated>2026-03-23T10:59:36Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-03-23T10:35:56Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=a02cf9a7f69ae1aefc38e1dde65565fab69e733c'/>
<id>urn:sha1:a02cf9a7f69ae1aefc38e1dde65565fab69e733c</id>
<content type='text'>
commit_hash:30841b1871a64fd6b3cc1eebcc9e4d5f1281c4fa
</content>
</entry>
<entry>
<title>[yt/misc] remove 64-bit requirement error directive</title>
<updated>2026-03-11T12:52:40Z</updated>
<author>
<name>vasko</name>
<email>vasko@yandex-team.com</email>
</author>
<published>2026-03-11T11:41:39Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=348ba08d3977cb999eba5ae2df579c24454525f7'/>
<id>urn:sha1:348ba08d3977cb999eba5ae2df579c24454525f7</id>
<content type='text'>
commit_hash:5bb34cf1e8e039b59fff79917c694509fff4666c
</content>
</entry>
<entry>
<title>[yt] make SplitMix &amp; HashCombine bit-independent</title>
<updated>2026-03-05T10:11:05Z</updated>
<author>
<name>vasko</name>
<email>vasko@yandex-team.com</email>
</author>
<published>2026-03-05T08:17:14Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=d0739058c7dbc0e2e2b8aa6c5bc399522d5e6fca'/>
<id>urn:sha1:d0739058c7dbc0e2e2b8aa6c5bc399522d5e6fca</id>
<content type='text'>
add realization of hash-functions for 32-bit platforms
commit_hash:3247a0524d3b66d759bf5ebd598be84c8dfb5837
</content>
</entry>
<entry>
<title>YT-27436 Introduce PP_IS_EMPTY</title>
<updated>2026-02-18T15:28:10Z</updated>
<author>
<name>dann239</name>
<email>dann239@yandex-team.com</email>
</author>
<published>2026-02-18T14:50:28Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=80feb38637cfcd598a0d734105f1ffb10dc124a2'/>
<id>urn:sha1:80feb38637cfcd598a0d734105f1ffb10dc124a2</id>
<content type='text'>
commit_hash:96d6c16b241e44c6cd7910b16864fd0d037c6e8b
</content>
</entry>
<entry>
<title>YT-27167: Better TBitwiseUnversionedValueHash</title>
<updated>2026-02-11T01:27:50Z</updated>
<author>
<name>pavook</name>
<email>pavook@yandex-team.com</email>
</author>
<published>2026-02-11T01:03:48Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=72e2e4fb5634001484795bce3f6ca27e21b24905'/>
<id>urn:sha1:72e2e4fb5634001484795bce3f6ca27e21b24905</id>
<content type='text'>
+20-30% throughput on UpdateColumnarStatistics benchmark (with large statistics enabled)

- Do not factor in value.Id when calculating column digest
- Pack metadata directly instead of multiple HashCombine calls
- Use SplitMix64 finalizer for proper bit distribution
- Use cheaper xor with metadata instead of HashCombine
- Use XXH3 for strings
- Remove unnecessary copy
- Measured quality increased: on 20 (c=1..20) sequences `{nc | n \in [1..10^6]}` MAE dropped from ~36% to ~20%

HLL digests might temporarily suffer a 2x increase upon merging with the previously computed ones.
commit_hash:0bf661245cf1848ba9ef8b6c840c18dfd05bd2a4
</content>
</entry>
<entry>
<title>YT-27244: range helpers move to library</title>
<updated>2026-02-05T09:20:53Z</updated>
<author>
<name>panesher</name>
<email>panesher@yandex-team.com</email>
</author>
<published>2026-02-05T08:45:44Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=626d15281a019d018dbb212dedefbc06e78a9edb'/>
<id>urn:sha1:626d15281a019d018dbb212dedefbc06e78a9edb</id>
<content type='text'>
commit_hash:f257ebdacfbf0549a0f55cc37df2c059629bac3a
</content>
</entry>
</feed>
