service-capacity-modeling 0.3.56__tar.gz → 0.3.57__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of service-capacity-modeling might be problematic. Click here for more details.

Files changed (96) hide show
  1. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/PKG-INFO +1 -1
  2. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/cassandra.py +36 -24
  3. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling.egg-info/PKG-INFO +1 -1
  4. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/LICENSE +0 -0
  5. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/README.md +0 -0
  6. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/__init__.py +0 -0
  7. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/capacity_planner.py +0 -0
  8. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/__init__.py +0 -0
  9. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/__init__.py +0 -0
  10. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/pricing/aws/3yr-reserved_ec2.json +0 -0
  11. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/pricing/aws/3yr-reserved_zz-overrides.json +0 -0
  12. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/profiles.txt +0 -0
  13. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c5.json +0 -0
  14. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c5a.json +0 -0
  15. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c5d.json +0 -0
  16. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c5n.json +0 -0
  17. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c6a.json +0 -0
  18. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c6i.json +0 -0
  19. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c6id.json +0 -0
  20. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c7a.json +0 -0
  21. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c7i.json +0 -0
  22. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m4.json +0 -0
  23. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m5.json +0 -0
  24. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m5n.json +0 -0
  25. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m6a.json +0 -0
  26. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m6i.json +0 -0
  27. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m6id.json +0 -0
  28. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m6idn.json +0 -0
  29. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m6in.json +0 -0
  30. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m7a.json +0 -0
  31. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m7i.json +0 -0
  32. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r4.json +0 -0
  33. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r5.json +0 -0
  34. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r5n.json +0 -0
  35. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r6a.json +0 -0
  36. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r6i.json +0 -0
  37. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r6id.json +0 -0
  38. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r6idn.json +0 -0
  39. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r6in.json +0 -0
  40. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r7a.json +0 -0
  41. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r7i.json +0 -0
  42. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/manual_drives.json +0 -0
  43. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/manual_instances.json +0 -0
  44. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/hardware/profiles/shapes/aws/manual_services.json +0 -0
  45. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/interface.py +0 -0
  46. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/__init__.py +0 -0
  47. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/common.py +0 -0
  48. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/headroom_strategy.py +0 -0
  49. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/__init__.py +0 -0
  50. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/__init__.py +0 -0
  51. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/aurora.py +0 -0
  52. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/counter.py +0 -0
  53. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/crdb.py +0 -0
  54. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/ddb.py +0 -0
  55. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/elasticsearch.py +0 -0
  56. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/entity.py +0 -0
  57. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/evcache.py +0 -0
  58. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/graphkv.py +0 -0
  59. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/iso_date_math.py +0 -0
  60. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/kafka.py +0 -0
  61. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/key_value.py +0 -0
  62. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/postgres.py +0 -0
  63. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/rds.py +0 -0
  64. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/stateless_java.py +0 -0
  65. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/time_series.py +0 -0
  66. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/time_series_config.py +0 -0
  67. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/wal.py +0 -0
  68. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/org/netflix/zookeeper.py +0 -0
  69. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/models/utils.py +0 -0
  70. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/stats.py +0 -0
  71. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/tools/__init__.py +0 -0
  72. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/tools/auto_shape.py +0 -0
  73. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/tools/fetch_pricing.py +0 -0
  74. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/tools/generate_missing.py +0 -0
  75. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling/tools/instance_families.py +0 -0
  76. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling.egg-info/SOURCES.txt +0 -0
  77. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling.egg-info/dependency_links.txt +0 -0
  78. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling.egg-info/entry_points.txt +0 -0
  79. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling.egg-info/requires.txt +0 -0
  80. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/service_capacity_modeling.egg-info/top_level.txt +0 -0
  81. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/setup.cfg +0 -0
  82. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/setup.py +0 -0
  83. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_arguments.py +0 -0
  84. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_buffers.py +0 -0
  85. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_common.py +0 -0
  86. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_desire_merge.py +0 -0
  87. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_generate_scenarios.py +0 -0
  88. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_hardware.py +0 -0
  89. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_hardware_shapes.py +0 -0
  90. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_headroom_strategy.py +0 -0
  91. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_io2.py +0 -0
  92. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_model_dump.py +0 -0
  93. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_reproducible.py +0 -0
  94. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_simulation.py +0 -0
  95. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_utils.py +0 -0
  96. {service_capacity_modeling-0.3.56 → service_capacity_modeling-0.3.57}/tests/test_working_set.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: service-capacity-modeling
3
- Version: 0.3.56
3
+ Version: 0.3.57
4
4
  Summary: Contains utilities for modeling capacity for pluggable workloads
5
5
  Author: Joseph Lynch
6
6
  Author-email: josephl@netflix.com
@@ -206,8 +206,34 @@ def _estimate_cassandra_requirement( # pylint: disable=too-many-positional-argu
206
206
  )
207
207
  rps_working_set = min(1.0, disk_rps / max_rps_to_disk)
208
208
 
209
- if memory_preserve:
210
- needed_memory = capacity_requirement.mem_gib.mid
209
+ # Cassandra can defer writes either by buffering in memory or by
210
+ # waiting longer before recompacting (the min-threshold on the
211
+ # L0 compactions or STCS compactions)
212
+ min_threshold = 4
213
+ write_buffer_gib = _write_buffer_gib_zone(
214
+ desires=desires,
215
+ zones_per_region=zones_per_region,
216
+ flushes_before_compaction=min_threshold,
217
+ )
218
+
219
+ while write_buffer_gib > 12 and min_threshold < 16:
220
+ min_threshold *= 2
221
+ write_buffer_gib = _write_buffer_gib_zone(
222
+ desires=desires,
223
+ zones_per_region=zones_per_region,
224
+ flushes_before_compaction=min_threshold,
225
+ )
226
+
227
+ if current_capacity and current_capacity.cluster_instance and memory_preserve:
228
+ # remove base memory and heap from per node ram and then
229
+ # multiply by number of nodes in a zone to compute the zonal requirement.
230
+ reserve_memory = _get_base_memory(desires) + _cass_heap(
231
+ current_capacity.cluster_instance.ram_gib
232
+ )
233
+ needed_memory = (
234
+ current_capacity.cluster_instance.ram_gib - reserve_memory
235
+ ) * current_capacity.cluster_instance_count.mid
236
+ write_buffer_gib = 0
211
237
  else:
212
238
  # If disk RPS will be smaller than our target because there are no
213
239
  # reads, we don't need to hold as much data in memory.
@@ -227,24 +253,6 @@ def _estimate_cassandra_requirement( # pylint: disable=too-many-positional-argu
227
253
  working_set,
228
254
  )
229
255
 
230
- # Cassandra can defer writes either by buffering in memory or by
231
- # waiting longer before recompacting (the min-threshold on the
232
- # L0 compactions or STCS compactions)
233
- min_threshold = 4
234
- write_buffer_gib = _write_buffer_gib_zone(
235
- desires=desires,
236
- zones_per_region=zones_per_region,
237
- flushes_before_compaction=min_threshold,
238
- )
239
-
240
- while write_buffer_gib > 12 and min_threshold < 16:
241
- min_threshold *= 2
242
- write_buffer_gib = _write_buffer_gib_zone(
243
- desires=desires,
244
- zones_per_region=zones_per_region,
245
- flushes_before_compaction=min_threshold,
246
- )
247
-
248
256
  return CapacityRequirement(
249
257
  requirement_type="cassandra-zonal",
250
258
  reference_shape=reference_shape,
@@ -358,10 +366,7 @@ def _estimate_cassandra_cluster_zonal( # pylint: disable=too-many-positional-ar
358
366
  if desires.service_tier <= 1:
359
367
  min_count = 2
360
368
 
361
- base_mem = (
362
- desires.data_shape.reserved_instance_app_mem_gib
363
- + desires.data_shape.reserved_instance_system_mem_gib
364
- )
369
+ base_mem = _get_base_memory(desires)
365
370
 
366
371
  heap_fn = _cass_heap_for_write_buffer(
367
372
  instance=instance,
@@ -484,6 +489,13 @@ def _cass_io_per_read(node_size_gib, sstable_size_mb=160):
484
489
  return 2 * levels
485
490
 
486
491
 
492
+ def _get_base_memory(desires: CapacityDesires):
493
+ return (
494
+ desires.data_shape.reserved_instance_app_mem_gib
495
+ + desires.data_shape.reserved_instance_system_mem_gib
496
+ )
497
+
498
+
487
499
  def _cass_heap_for_write_buffer(
488
500
  instance: Instance,
489
501
  write_buffer_gib: float,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: service-capacity-modeling
3
- Version: 0.3.56
3
+ Version: 0.3.57
4
4
  Summary: Contains utilities for modeling capacity for pluggable workloads
5
5
  Author: Joseph Lynch
6
6
  Author-email: josephl@netflix.com