in analysis/GreenSKU-Framework/src/carbon_model.py [0:0]
def _set_server_count(self) -> None:
"""Set the number of servers in the server. Based on rack power and provisioned spec."""
# num_servers overrides rack power calculation
if 'num_servers' in self.config['rack'] and self.config['rack']['num_servers'] > 0 and self.config['rack']['num_servers'] is not None:
self.server_count = self.config['rack']['num_servers']
else:
rack_set_power = self.config['rack']['power']
rack_power = self.provisioned_component_power['rack']
rack_set_power -= rack_power
provisioned_power, allocated_power, _ = self.get_server_power()
if self.print_out:
print(f"Provisioned power: {provisioned_power:,.2f}, Allocated power: {allocated_power:,.2f}")
print(f"Rack set power: {rack_set_power:,.2f}")
power_server_count = floor(rack_set_power / provisioned_power)
rack_capacity = self.get_rack_capacity()
capacity_server_count = floor(rack_capacity / self.get_server_form())
if power_server_count < capacity_server_count:
self.power_limited = True
self.server_count = power_server_count
if self.print_out:
print(f"Rack is power limited to: {self.server_count} servers")
else:
self.power_limited = False
self.server_count = capacity_server_count
if self.print_out:
print(f"Rack is space limited to: {self.server_count} servers")
if self.print_out:
print(f"Server count: {self.server_count}")