ydb-platform / nbs

Network Block Store
Apache License 2.0
50 stars 14 forks source link

[NBS] Бесконечный compaction #1143

Open EvgeniyKozev opened 1 month ago

EvgeniyKozev commented 1 month ago
  1. Включили batch_compaction
  2. Заметили, что один диск бесконечно набирает cleanup_queue. Дорос до 3Tb для диска 300Gb
  3. Вырубили запись на диск Screenshot from 2024-05-07 14-45-38
  4. Диск начал убирать cleanup_queue, но в один момент, она начала опять расти, хотя нагрузки нет ни какой Screenshot from 2024-05-07 14-47-18
  5. По графикам компакшина, диск всегда стоит ниже порога Screenshot from 2024-05-07 14-49-00

Предположительная версия: в расчете порога на компакшн учитывается cleanup_queue, что зацикливает аглоритм.

Дополнительные вопросы для изучения:

  1. Почему медленно работает cleanup. Возможно где то есть линейный проход по индексам блобов, которые надо очищать.
  2. Почему данные при старте таблетки лишний раз копируются. Сейчас при старте таблетки в локальной базе около 6Gb, которые вычитываются в память и потом копируются, что приводи к OOM. Предположительно тут https://github.com/ydb-platform/nbs/blob/main/cloud/blockstore/libs/storage/partition/part_actor_loadstate.cpp#L227
qkrorlqr commented 1 month ago

Дорос до 3Tb для диска 300Gb

Tb и Gb - это терабиты и гигабиты?

Возможно где то есть линейный проход по индексам блобов, которые надо очищать.

не понял фразу кто такие "индексы блобов"?

Почему данные при старте таблетки лишний раз копируются. Сейчас при старте таблетки в локальной базе около 6Gb, которые вычитываются в память и потом копируются, что приводи к OOM. Предположительно тут https://github.com/ydb-platform/nbs/blob/main/cloud/blockstore/libs/storage/partition/part_actor_loadstate.cpp#L227

там нет данных - там только айдишники блобов https://github.com/ydb-platform/nbs/blob/927261998678c8e1784d373d481226177acdf031/cloud/blockstore/libs/storage/partition/part_schema.h#L263 вычитываются, потому что там должны быть копейки