ResourceGovernancePolicy中的“cpushares”如何工作?

时间:2017-01-15 19:32:04

标签: azure-service-fabric

使用不同的“cpuShares”设置(500和1500)将同一容器应用程序的2个版本部署到Service Fabric。我预计当两个托管在同一主机上时,版本1将被分配三分之一的CPU然后第二个但实际上它们都占用了50%的CPU。 https://msdn.microsoft.com/en-us/library/windows/hardware/dn312121(v=vs.85).aspx#step3

enter image description here enter image description here

App Manifest

<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="PI_CalculatorType" ApplicationTypeVersion="770Shares" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Parameters>
    <Parameter Name="PI_Web_Service_InstanceCount" DefaultValue="-1" />
  </Parameters>
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="PI_Web_ServicePkg" ServiceManifestVersion="770Shares" />
    <ConfigOverrides />
    <Policies>
      <ContainerHostPolicies CodePackageRef="Code">
        <PortBinding ContainerPort="80" EndpointRef="PI_Web_ServiceTypeEndpoint" />
      </ContainerHostPolicies>
      <ResourceGovernancePolicy CodePackageRef="Code" MemorySwapInMB="4084" MemoryReservationInMB="1024" CpuShares="770" />
    </Policies>
  </ServiceManifestImport>
  <DefaultServices>
    <Service Name="PI_Web_Service">
      <StatelessService ServiceTypeName="PI_Web_ServiceType" InstanceCount="[PI_Web_Service_InstanceCount]">
        <SingletonPartition />
      </StatelessService>
    </Service>
  </DefaultServices>
</ApplicationManifest>

服务清单

<ServiceManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="PI_Web_ServicePkg" Version="770Shares" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <ServiceTypes>
    <StatelessServiceType ServiceTypeName="PI_Web_ServiceType" UseImplicitHost="true" />
  </ServiceTypes>
  <CodePackage Name="Code" Version="770Shares">
    <EntryPoint>
      <ContainerHost>
        <ImageName>artisticcheese/iis:latest</ImageName>
      </ContainerHost>
    </EntryPoint>
  </CodePackage>
  <ConfigPackage Name="Config" Version="770Shares" />
  <Resources>
    <Endpoints>
      <Endpoint Name="PI_Web_ServiceTypeEndpoint" Protocol="http" UriScheme="http" />
    </Endpoints>
  </Resources>
</ServiceManifest>

要调用以重现的网址

http://192.168.1.193:20001/pi/service.svc/pi/40000

2 个答案:

答案 0 :(得分:1)

这是容器支持的预览位的已知问题。它是为即将发布的版本修复的。

答案 1 :(得分:0)

默认情况下,

CpuShares与一组1024份CPU相关。

  

将此标志设置为大于或小于默认值1024的值   增加或减少容器的重量,并让它获得一个   主机机器CPU周期的大小比例。

您的500设置导致一个服务使用大约一半的CPU,剩下的则用于另一个服务。

将500改为341应该可以解决问题。