> This page is for version 4.3.
> For other versions, use one of these documentation indexes:
> - 4.6 (Latest) (default): https://docs.nvidia.com/holoscan/sdk-user-guide/4-6-latest/llms.txt
> - ltsb-2.0: https://docs.nvidia.com/holoscan/sdk-user-guide/ltsb-2-0/llms.txt
> - 4.5: https://docs.nvidia.com/holoscan/sdk-user-guide/4-5/llms.txt
> - 4.4: https://docs.nvidia.com/holoscan/sdk-user-guide/4-4/llms.txt
> - 4.3: https://docs.nvidia.com/holoscan/sdk-user-guide/4-3/llms.txt
> - Archives: https://docs.nvidia.com/holoscan/sdk-user-guide/archives/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/holoscan/sdk-user-guide/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/holoscan/sdk-user-guide/_mcp/server.

# holoscan::FragmentScheduler

> The fragment scheduler class.

The fragment scheduler class.

This class is responsible for scheduling the the set of fragments based on the available app workers.

```cpp showLineNumbers={false}
#include <holoscan/fragment_scheduler.hpp>
```

---

## Constructors

### FragmentScheduler \[#fragmentscheduler]

```cpp showLineNumbers={false}
holoscan::FragmentScheduler::FragmentScheduler(
    std::unique_ptr<FragmentAllocationStrategy> &&allocation_strategy = {}
)
```

### Destructor \[#destructor]

### \~FragmentScheduler

```cpp showLineNumbers={false}
virtual holoscan::FragmentScheduler::~FragmentScheduler()
```

---

## Methods

### add\_resource\_requirement \[#addresourcerequirement]

#### Add resource requirement for a fragment (1)

```cpp showLineNumbers={false}
void holoscan::FragmentScheduler::add_resource_requirement(
    const SystemResourceRequirement &resource_requirement
)
```

Add resource requirement for a fragment.

**Parameters**

**`resource_requirement`** `const SystemResourceRequirement &`

The resource requirement for a fragment.

---

#### Add resource requirement for a fragment (2)

```cpp showLineNumbers={false}
void holoscan::FragmentScheduler::add_resource_requirement(
    SystemResourceRequirement &&resource_requirement
)
```

Add resource requirement for a fragment.

**Parameters**

**`resource_requirement`** `SystemResourceRequirement &&`

The resource requirement for a fragment.

---

### add\_available\_resource \[#addavailableresource]

#### Add app worker resource (1)

```cpp showLineNumbers={false}
void holoscan::FragmentScheduler::add_available_resource(
    const AvailableSystemResource &available_resource
)
```

Add app worker resource.

**Parameters**

**`available_resource`** `const AvailableSystemResource &`

The available resource for an app worker.

---

#### Add app worker resource (2)

```cpp showLineNumbers={false}
void holoscan::FragmentScheduler::add_available_resource(
    AvailableSystemResource &&available_resource
)
```

Add app worker resource.

**Parameters**

**`available_resource`** `AvailableSystemResource &&`

The available resource for an app worker.

---

### schedule \[#schedule]

```cpp showLineNumbers={false}
holoscan::expected<std::unordered_map<std::string, std::string>, std::string> holoscan::FragmentScheduler::schedule()
```

Schedule the fragments.

**Returns:** [holoscan::expected](../typedefs/expected)\<std::unordered\_map\<std::string, std::string>, std::string> The mapping from fragment name to app worker id.

---

## Member variables

| Name        | Type                                            | Description |
| ----------- | ----------------------------------------------- | ----------- |
| `strategy_` | `std::unique_ptr< FragmentAllocationStrategy >` |             |