stockpile.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include <library/cpp/yt/cpu_clock/clock.h>
  3. #include <library/cpp/yt/misc/enum.h>
  4. #include <util/system/types.h>
  5. #include <util/generic/size_literals.h>
  6. #include <util/datetime/base.h>
  7. namespace NYT {
  8. ////////////////////////////////////////////////////////////////////////////////
  9. DEFINE_ENUM(EStockpileStrategy,
  10. ((FixedBreaks) (0))
  11. ((FlooredLoad) (1))
  12. ((ProgressiveBackoff) (2))
  13. );
  14. ////////////////////////////////////////////////////////////////////////////////
  15. struct TStockpileOptions
  16. {
  17. static constexpr i64 DefaultBufferSize = 4_GBs;
  18. i64 BufferSize = DefaultBufferSize;
  19. static constexpr int DefaultThreadCount = 4;
  20. int ThreadCount = DefaultThreadCount;
  21. static constexpr EStockpileStrategy DefaultStrategy = EStockpileStrategy::FixedBreaks;
  22. EStockpileStrategy Strategy = DefaultStrategy;
  23. static constexpr TDuration DefaultPeriod = TDuration::MilliSeconds(10);
  24. TDuration Period = DefaultPeriod;
  25. };
  26. ////////////////////////////////////////////////////////////////////////////////
  27. void RunStockpileThread(TStockpileOptions options, std::atomic<bool>* shouldProceed);
  28. void RunDetachedStockpileThreads(TStockpileOptions options);
  29. ////////////////////////////////////////////////////////////////////////////////
  30. } // namespace NYT