service-capacity-modeling 0.3.45__tar.gz → 0.3.47__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 (95) hide show
  1. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/PKG-INFO +1 -1
  2. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/kafka.py +15 -6
  3. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling.egg-info/PKG-INFO +1 -1
  4. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/LICENSE +0 -0
  5. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/README.md +0 -0
  6. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/__init__.py +0 -0
  7. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/capacity_planner.py +0 -0
  8. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/__init__.py +0 -0
  9. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/__init__.py +0 -0
  10. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/pricing/aws/3yr-reserved_ec2.json +0 -0
  11. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/pricing/aws/3yr-reserved_zz-overrides.json +0 -0
  12. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/profiles.txt +0 -0
  13. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c5.json +0 -0
  14. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c5a.json +0 -0
  15. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c5d.json +0 -0
  16. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c5n.json +0 -0
  17. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c6a.json +0 -0
  18. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c6i.json +0 -0
  19. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c6id.json +0 -0
  20. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c7a.json +0 -0
  21. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_c7i.json +0 -0
  22. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m4.json +0 -0
  23. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m5.json +0 -0
  24. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m5n.json +0 -0
  25. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m6a.json +0 -0
  26. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m6i.json +0 -0
  27. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m6id.json +0 -0
  28. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m6idn.json +0 -0
  29. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m6in.json +0 -0
  30. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m7a.json +0 -0
  31. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_m7i.json +0 -0
  32. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r4.json +0 -0
  33. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r5.json +0 -0
  34. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r5n.json +0 -0
  35. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r6a.json +0 -0
  36. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r6i.json +0 -0
  37. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r6id.json +0 -0
  38. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r6idn.json +0 -0
  39. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r6in.json +0 -0
  40. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r7a.json +0 -0
  41. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/auto_r7i.json +0 -0
  42. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/manual_drives.json +0 -0
  43. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/manual_instances.json +0 -0
  44. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/hardware/profiles/shapes/aws/manual_services.json +0 -0
  45. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/interface.py +0 -0
  46. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/__init__.py +0 -0
  47. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/common.py +0 -0
  48. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/headroom_strategy.py +0 -0
  49. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/__init__.py +0 -0
  50. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/__init__.py +0 -0
  51. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/aurora.py +0 -0
  52. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/cassandra.py +0 -0
  53. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/counter.py +0 -0
  54. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/crdb.py +0 -0
  55. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/ddb.py +0 -0
  56. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/elasticsearch.py +0 -0
  57. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/entity.py +0 -0
  58. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/evcache.py +0 -0
  59. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/graphkv.py +0 -0
  60. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/iso_date_math.py +0 -0
  61. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/key_value.py +0 -0
  62. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/postgres.py +0 -0
  63. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/rds.py +0 -0
  64. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/stateless_java.py +0 -0
  65. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/time_series.py +0 -0
  66. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/time_series_config.py +0 -0
  67. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/wal.py +0 -0
  68. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/org/netflix/zookeeper.py +0 -0
  69. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/models/utils.py +0 -0
  70. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/stats.py +0 -0
  71. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/tools/__init__.py +0 -0
  72. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/tools/auto_shape.py +0 -0
  73. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/tools/fetch_pricing.py +0 -0
  74. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/tools/generate_missing.py +0 -0
  75. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling/tools/instance_families.py +0 -0
  76. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling.egg-info/SOURCES.txt +0 -0
  77. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling.egg-info/dependency_links.txt +0 -0
  78. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling.egg-info/entry_points.txt +0 -0
  79. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling.egg-info/requires.txt +0 -0
  80. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/service_capacity_modeling.egg-info/top_level.txt +0 -0
  81. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/setup.cfg +0 -0
  82. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/setup.py +0 -0
  83. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_arguments.py +0 -0
  84. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_buffers.py +0 -0
  85. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_common.py +0 -0
  86. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_desire_merge.py +0 -0
  87. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_generate_scenarios.py +0 -0
  88. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_hardware.py +0 -0
  89. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_hardware_shapes.py +0 -0
  90. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_headroom_strategy.py +0 -0
  91. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_io2.py +0 -0
  92. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_model_dump.py +0 -0
  93. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_reproducible.py +0 -0
  94. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/tests/test_simulation.py +0 -0
  95. {service_capacity_modeling-0.3.45 → service_capacity_modeling-0.3.47}/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.45
3
+ Version: 0.3.47
4
4
  Summary: Contains utilities for modeling capacity for pluggable workloads
5
5
  Author: Joseph Lynch
6
6
  Author-email: josephl@netflix.com
@@ -159,7 +159,7 @@ def _estimate_kafka_requirement( # pylint: disable=too-many-positional-argument
159
159
  needed_network_mbps = max(bw_in, bw_out) * 1.40
160
160
 
161
161
  needed_disk = math.ceil(
162
- desires.data_shape.estimated_state_size_gib.mid * copies_per_region,
162
+ desires.data_shape.estimated_state_size_gib.mid,
163
163
  )
164
164
 
165
165
  # Keep the last N seconds hot in cache
@@ -416,6 +416,10 @@ class NflxKafkaArguments(BaseModel):
416
416
 
417
417
 
418
418
  class NflxKafkaCapacityModel(CapacityModel):
419
+
420
+ HA_DEFAULT_REPLICATION_FACTOR = 2
421
+ SC_DEFAULT_REPLICATION_FACTOR = 3
422
+
419
423
  @staticmethod
420
424
  def capacity_plan(
421
425
  instance: Instance,
@@ -427,11 +431,11 @@ class NflxKafkaCapacityModel(CapacityModel):
427
431
  cluster_type: ClusterType = ClusterType(
428
432
  extra_model_arguments.get("cluster_type", "high-availability")
429
433
  )
430
- default_replication = 2
434
+ replication_factor = NflxKafkaCapacityModel.HA_DEFAULT_REPLICATION_FACTOR
431
435
  if cluster_type == ClusterType.strong:
432
- default_replication = 3
436
+ replication_factor = NflxKafkaCapacityModel.SC_DEFAULT_REPLICATION_FACTOR
433
437
  copies_per_region: int = extra_model_arguments.get(
434
- "copies_per_region", default_replication
438
+ "copies_per_region", replication_factor
435
439
  )
436
440
  if cluster_type == ClusterType.strong and copies_per_region < 3:
437
441
  raise ValueError("Strong consistency and RF<3 doesn't work")
@@ -503,8 +507,13 @@ class NflxKafkaCapacityModel(CapacityModel):
503
507
  retention = extra_model_arguments.get("retention", "PT8H")
504
508
  retention_secs = iso_to_seconds(retention)
505
509
 
506
- # write throughput * retention = usage
507
- state_gib = (write_bytes.mid * retention_secs) / GIB_IN_BYTES
510
+ # write throughput * retention * replication factor = usage
511
+ replication_factor = NflxKafkaCapacityModel.HA_DEFAULT_REPLICATION_FACTOR
512
+ if extra_model_arguments.get("cluster_type", None) == ClusterType.strong:
513
+ replication_factor = NflxKafkaCapacityModel.SC_DEFAULT_REPLICATION_FACTOR
514
+ state_gib = (
515
+ write_bytes.mid * retention_secs * replication_factor
516
+ ) / GIB_IN_BYTES
508
517
 
509
518
  return CapacityDesires(
510
519
  query_pattern=QueryPattern(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: service-capacity-modeling
3
- Version: 0.3.45
3
+ Version: 0.3.47
4
4
  Summary: Contains utilities for modeling capacity for pluggable workloads
5
5
  Author: Joseph Lynch
6
6
  Author-email: josephl@netflix.com