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

EPIC: Safe throttling for Out of Space, log overflow, small blob overflow at VDisk #12510

Open
4 of 13 tasks
the-ancient-1 opened this issue Dec 11, 2024 · 1 comment
Open
4 of 13 tasks
Assignees

Comments

@the-ancient-1
Copy link
Member

the-ancient-1 commented Dec 11, 2024

Safely and predictably handle Out of Space situations, log overflow, and accumulation of excessive amounts of small blobs in the index.

VDisks under load should not enter a state where nothing can be done without involving the operations team armed with dstool. A tablet on a full disk should maintain the ability to delete data.

Work Plan (starting December 5)
2d - December 9

  • Learn to generate load that creates problematic situations (compaction in circles, many small blobs)

5d - December 16

3d - December 19

3d - December 24

2d - December 26

4d - January 10

  • Write documentation about configuration

2d - January 14

  • Ensure alert appears for on-duty engineer / show NBS what to monitor

3d - January 17

  • Implement log overflow throttling - monitor log length, control throttler

3d - January 22

  • Create graphs, settings, logs about the log

4d - January 27

  • Write configuration documentation

3d - January 30

3d - February 4

  • Create graphs, settings, logs about out of space

4d - February 10

  • Write documentation about configuration

43d

Definition of Done:

  1. A cluster user can fill up the cluster's disk space using only their application and independently resolve this situation by deleting data.
  2. A cluster user can fill up the cluster with small blobs using only their application and will receive alerts and appropriate throttling.
@the-ancient-1
Copy link
Member Author

Ниже - черновик.
Первая подзадача:

  • запись большого количества мелких блобов (и вообще отставание компакшн) должна приводить к троттлингу записи мелких блобов, то что происходит троттлинг должно быть явно видно по графикам, веб интерфейсу и логам
  • наличие слишком большого количества мелких блобов должно приводить к срабатыванию алерта еще до троттлинга

При превышении пороговых количеств гигабайт, используемых для хранения мелких (inplaced)блобов (или чанков индекса?), необходимы:

  • графики - текущее значение и пороговые

  • ворнинг

  • алерт

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

  • для всего этого настройки порогов и выключатели через ICB + CMS

  • нужен RFC описывающий как и для чего будет замедляться и останавливаться работа, на какие алерты можно будет смотреть, чтобы мы этот RFC показали ребятам NBS заранее и они меньше удивились когда у них загорятся алерты, все замедлится и остановится.

  • альтернативный / дополнительный путь реализации - троттлинг входящей нагрузки на запись в лог, происходящий в условиях, когда компакшн высоких уровней не успевает и копится слишком много чанков полученных в результате компакшна фреша.

Вторая подзадача:

  • переполнение лога должно приводить к алерту еще до троттлинга
  • переполнение лога должно приводить к троттлингу нагрузки на VDisk вплоть до полной остановки

Третья подзадача

  • Приближение к Out of Space должно приводить к троттлингу записи
  • Пожелтение групп не должно мешать поднятию таблеток и удалению данных, возможно для этого удаление потребуется дополнительно разметить (?)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants