def _set_server_count()

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}")