# Share

Represents a group of Job Definitions.

All Job Definitions that
declare a share identifier will be considered members of the Share
defined by that share identifier.

The Scheduler divides the maximum available vCPUs of the ComputeEnvironment
among Jobs in the Queue based on their shareIdentifier and the weightFactor
associated with that shareIdentifier.

- Source: [`aws-batch/lib/scheduling-policy.ts`](https://github.com/aws/aws-cdk/blob/v2.274.0/packages/aws-cdk-lib/aws-batch/lib/scheduling-policy.ts#L75)
- Type last changed: v2.96.0 · 13 Sep 2023

## Example

```ts
const fairsharePolicy = new batch.FairshareSchedulingPolicy(this, 'myFairsharePolicy');

fairsharePolicy.addShare({
  shareIdentifier: 'A',
  weightFactor: 1,
});
fairsharePolicy.addShare({
  shareIdentifier: 'B',
  weightFactor: 1,
});
new batch.JobQueue(this, 'JobQueue', {
  schedulingPolicy: fairsharePolicy,
});
```

## Properties

- `shareIdentifier`: string (required) — The identifier of this Share.

  All jobs that specify this share identifier
  when submitted to the queue will be considered as part of this Share.

- `weightFactor`: number (required) — The weight factor given to this Share.

  The Scheduler decides which jobs to put in the Compute Environment
  such that the following ratio is equal for each job:

  `sharevCpu / weightFactor`,

  where `sharevCpu` is the total amount of vCPU given to that particular share; that is,
  the sum of the vCPU of each job currently in the Compute Environment for that share.

  See the readme of this module for a detailed example that shows how these are used,
  how it relates to `computeReservation`, and how `shareDecay` affects these calculations.
