@@ -184,6 +184,8 @@ namespace NKikimr {
184
184
TIntrusivePtr<TVDiskConfig> VCfg;
185
185
TPDiskCtxPtr PDiskCtx;
186
186
187
+ ui64 WriteSpeedBps = 100'000'000 ;
188
+
187
189
TControlWrapper ThrottlingMinInplacedSize;
188
190
TControlWrapper ThrottlingMaxInplacedSize;
189
191
@@ -211,35 +213,31 @@ namespace NKikimr {
211
213
}
212
214
213
215
ui64 CalcSstCountSpeedLimit () const {
214
- ui64 deviceSpeed = (ui64)VCfg->ThrottlingDeviceSpeed ;
215
216
ui64 minSstCount = (ui64)VCfg->ThrottlingMinLevel0SstCount ;
216
217
ui64 maxSstCount = (ui64)VCfg->ThrottlingMaxLevel0SstCount ;
217
218
218
- return LinearInterpolation (CurrentSstCount, minSstCount, maxSstCount, deviceSpeed );
219
+ return LinearInterpolation (CurrentSstCount, minSstCount, maxSstCount, WriteSpeedBps );
219
220
}
220
221
221
222
ui64 CalcInplacedSizeSpeedLimit () const {
222
- ui64 deviceSpeed = (ui64)VCfg->ThrottlingDeviceSpeed ;
223
223
ui64 minInplacedSize = (ui64)ThrottlingMinInplacedSize;
224
224
ui64 maxInplacedSize = (ui64)ThrottlingMaxInplacedSize;
225
225
226
- return LinearInterpolation (CurrentInplacedSize, minInplacedSize, maxInplacedSize, deviceSpeed );
226
+ return LinearInterpolation (CurrentInplacedSize, minInplacedSize, maxInplacedSize, WriteSpeedBps );
227
227
}
228
228
229
229
ui64 CalcOccupancySpeedLimit () const {
230
- ui64 deviceSpeed = (ui64)VCfg->ThrottlingDeviceSpeed ;
231
230
ui64 minOccupancy = (ui64)VCfg->ThrottlingMinOccupancyPerMille * 1000 ;
232
231
ui64 maxOccupancy = (ui64)VCfg->ThrottlingMaxOccupancyPerMille * 1000 ;
233
232
234
- return LinearInterpolation (CurrentOccupancy, minOccupancy, maxOccupancy, deviceSpeed );
233
+ return LinearInterpolation (CurrentOccupancy, minOccupancy, maxOccupancy, WriteSpeedBps );
235
234
}
236
235
237
236
ui64 CalcLogChunkCountSpeedLimit () const {
238
- ui64 deviceSpeed = (ui64)VCfg->ThrottlingDeviceSpeed ;
239
237
ui64 minLogChunkCount = (ui64)VCfg->ThrottlingMinLogChunkCount ;
240
238
ui64 maxLogChunkCount = (ui64)VCfg->ThrottlingMaxLogChunkCount ;
241
239
242
- return LinearInterpolation (CurrentLogChunkCount, minLogChunkCount, maxLogChunkCount, deviceSpeed );
240
+ return LinearInterpolation (CurrentLogChunkCount, minLogChunkCount, maxLogChunkCount, WriteSpeedBps );
243
241
}
244
242
245
243
ui64 CalcSpeedLimit () const {
@@ -267,6 +265,7 @@ namespace NKikimr {
267
265
NPDisk::EDeviceType mediaType = NPDisk::DEVICE_TYPE_UNKNOWN;
268
266
if (PDiskCtx && PDiskCtx->Dsk ) {
269
267
mediaType = PDiskCtx->Dsk ->TrueMediaType ;
268
+ WriteSpeedBps = PDiskCtx->Dsk ->WriteSpeedBps ;
270
269
}
271
270
if (mediaType == NPDisk::DEVICE_TYPE_UNKNOWN) {
272
271
mediaType = VCfg->BaseInfo .DeviceType ;
@@ -304,8 +303,7 @@ namespace NKikimr {
304
303
if (!IsActive ()) {
305
304
return 1000 ;
306
305
}
307
- ui64 deviceSpeed = (ui64)VCfg->ThrottlingDeviceSpeed ;
308
- double rate = (double )CurrentSpeedLimit / deviceSpeed;
306
+ double rate = (double )CurrentSpeedLimit / WriteSpeedBps;
309
307
return rate * 1000 ;
310
308
}
311
309
@@ -360,7 +358,7 @@ namespace NKikimr {
360
358
if (!IsActive ()) {
361
359
CurrentTime = {};
362
360
AvailableBytes = 0 ;
363
- CurrentSpeedLimit = (ui64)VCfg-> ThrottlingDeviceSpeed ;
361
+ CurrentSpeedLimit = WriteSpeedBps ;
364
362
} else {
365
363
if (!prevActive) {
366
364
CurrentTime = now;
@@ -378,8 +376,7 @@ namespace NKikimr {
378
376
}
379
377
auto us = (now - CurrentTime).MicroSeconds ();
380
378
AvailableBytes += CurrentSpeedLimit * us / 1000000 ;
381
- ui64 deviceSpeed = (ui64)VCfg->ThrottlingDeviceSpeed ;
382
- AvailableBytes = std::min (AvailableBytes, deviceSpeed);
379
+ AvailableBytes = std::min (AvailableBytes, WriteSpeedBps);
383
380
CurrentTime = now;
384
381
}
385
382
};
0 commit comments