ydb-platform / nbs

Network Block & File Store
Apache License 2.0
59 stars 22 forks source link

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

Open EvgeniyKozev opened 7 months ago

EvgeniyKozev commented 7 months 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 7 months 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 вычитываются, потому что там должны быть копейки