From 677bf545f0b03b2e5e99885686f93f9b00fc2456 Mon Sep 17 00:00:00 2001 From: MIKE-4-prog Date: Tue, 7 Apr 2026 12:42:26 +0100 Subject: [PATCH 1/2] docs: add BinPack, Gang, Priority plugin documentation - Add comprehensive documentation for three Volcano scheduler plugins * BinPack plugin - optimizes node utilization by efficient pod packing * Gang plugin - ensures all-or-nothing scheduling for batch jobs * Priority plugin - implements priority-based scheduling with preemption - Update menus.toml to include Plugins as top-level collapsible section - Plugin pages auto-discovered via parent='plugins' frontmatter - Remove obsolete plugins.md file Signed-off-by: MIKE-4-prog --- config/_default/menus.toml | 63 ++++--- content/en/docs/v1-12-0/binpack.md | 90 +++++++++ content/en/docs/v1-12-0/gang.md | 96 ++++++++++ content/en/docs/v1-12-0/plugins.md | 176 ------------------ content/en/docs/v1-12-0/priority.md | 82 ++++++++ ...aca5_22204_250x250_fill_q75_box_center.jpg | Bin 7975 -> 0 bytes ...1349_26591_250x250_fill_q75_box_center.jpg | Bin 8560 -> 0 bytes ...b4e5_12861_250x250_fill_q75_box_center.jpg | Bin 3653 -> 0 bytes ...2099_26240_250x250_fill_q75_box_center.jpg | Bin 7795 -> 0 bytes ...ee24be01_651_250x250_fill_box_center_2.png | Bin 1135 -> 0 bytes ...88b2_27518_250x250_fill_q75_box_center.jpg | Bin 8328 -> 0 bytes ...3b16dc_18253_250x250_fill_box_center_2.png | Bin 9194 -> 0 bytes 12 files changed, 308 insertions(+), 199 deletions(-) create mode 100644 content/en/docs/v1-12-0/binpack.md create mode 100644 content/en/docs/v1-12-0/gang.md delete mode 100644 content/en/docs/v1-12-0/plugins.md create mode 100644 content/en/docs/v1-12-0/priority.md delete mode 100644 resources/_gen/images/author/admin/avatar_hu13676304118c001ee9d3215c0a6faca5_22204_250x250_fill_q75_box_center.jpg delete mode 100644 resources/_gen/images/author/admin/avatar_hu159c91c4ee77ab95704943cbcaa51349_26591_250x250_fill_q75_box_center.jpg delete mode 100644 resources/_gen/images/author/admin/avatar_hu52a603635ecebd45650b162dadabb4e5_12861_250x250_fill_q75_box_center.jpg delete mode 100644 resources/_gen/images/author/admin/avatar_hu64fe02337e89a1e07746ab0fd5be2099_26240_250x250_fill_q75_box_center.jpg delete mode 100644 resources/_gen/images/author/admin/avatar_huaccc2356d00d32bf3e0911aeee24be01_651_250x250_fill_box_center_2.png delete mode 100644 resources/_gen/images/author/admin/avatar_huc5b0a461a3b0ae065a49b418db6788b2_27518_250x250_fill_q75_box_center.jpg delete mode 100644 resources/_gen/images/author/admin/avatar_hucba4e7621799f6490cd95549243b16dc_18253_250x250_fill_box_center_2.png diff --git a/config/_default/menus.toml b/config/_default/menus.toml index bc509a63..04c01230 100644 --- a/config/_default/menus.toml +++ b/config/_default/menus.toml @@ -13,24 +13,20 @@ url = "#about" weight = 2 - +[[main]] + name = "Why Volcano" + url = "#required" + weight = 3 [[main]] name = "Blog" url = "#posts" weight = 4 - [[main]] - name = "Why Volcano" - url = "#required" - weight = 3 - -#[[main]] - #name = "Documentation" - #url = "docs/" - #weight = 6 - + name = "Documentation" + url = "/docs/" + weight = 6 [[main_right]] name = "" @@ -45,7 +41,6 @@ weight = 20 [[main_right]] - name = "\"slack\"" post = "" url = "https://cloud-native.slack.com/archives/C011GJDQS0N" @@ -74,10 +69,10 @@ identifier = "features" [[docs]] -name = "User Guide" -weight = 5 -identifier = "user-guide" -url = "/en/docs/user-guide/" + name = "User Guide" + weight = 5 + identifier = "user-guide" + url = "/en/docs/user-guide/" [[docs]] name = "Ecosystem" @@ -100,7 +95,7 @@ url = "/en/docs/user-guide/" identifier = "contribution" -# Documentation version v1.12.0 +# Documentation version v1.12.0 (WORKING CONFIGURATION) [[v1-12-0]] name = "Home" @@ -123,25 +118,47 @@ url = "/en/docs/user-guide/" identifier = "features" [[v1-12-0]] - name = "Ecosystem" + name = "User Guide" weight = 5 - identifier = "ecosystem" + identifier = "user-guide" + url = "/en/docs/v1-12-0/user-guide/" +# Plugins section (top-level, collapsible container) [[v1-12-0]] - name = "Scheduler" + name = "Plugins" weight = 6 + identifier = "plugins" + +# Scheduler section +[[v1-12-0]] + name = "Scheduler" + weight = 7 identifier = "scheduler" +# Continue with remaining sections +[[v1-12-0]] + name = "Ecosystem" + weight = 8 + identifier = "ecosystem" + [[v1-12-0]] name = "CLI" - weight = 7 + weight = 9 identifier = "cli" [[v1-12-0]] name = "Contribution" - weight = 8 + weight = 10 identifier = "contribution" + +# Plugins menu for the Academic theme (required for frontmatter) +[[plugins]] + name = "Plugins" + weight = 1 + identifier = "plugins" + + # Documentation version v1.11.0 [[v1-11-0]] @@ -344,4 +361,4 @@ url = "/en/docs/user-guide/" [[posts]] name = "Customers" weight = 10 - identifier = "customers" + identifier = "customers" \ No newline at end of file diff --git a/content/en/docs/v1-12-0/binpack.md b/content/en/docs/v1-12-0/binpack.md new file mode 100644 index 00000000..d40e0bfb --- /dev/null +++ b/content/en/docs/v1-12-0/binpack.md @@ -0,0 +1,90 @@ ++++ +title = "BinPack" +date = 2024-01-01 +lastmod = 2024-01-01 +draft = false +toc = true +type = "docs" + +# Add menu entry to sidebar. +linktitle = "BinPack" +[menu.v1-12-0] + parent = "plugins" + weight = 1 ++++ + + +The **BinPack Plugin** in Volcano aims to fill nodes as efficiently as possible, trying not to leave nodes idle. It scores nodes based on resource utilization and schedules pods to maximize usage, which is especially useful for small jobs or high-concurrency workloads. + +## Plugin Details + +- **Plugin Name:** `binpack` +- **Location in source:** `pkg/scheduler/plugins/binpack/binpack.go` +- **Purpose:** Optimizes node usage by packing pods onto fewer nodes, improving cluster resource utilization. + +## Features + +1. **Node Scoring** + - Scores nodes according to available resources. + - Higher scores indicate better utilization of node resources. + +2. **Weighted Resource Consideration** + - Considers CPU, memory, and other resources with configurable weights. + - Different resources can be prioritized in node selection. + +3. **Pod Placement** + - Fills existing nodes as much as possible before using new nodes. + - Reduces fragmentation and improves autoscaling efficiency. + +4. **Integration with Scheduler** + - Injected as a plugin into Volcano's scheduling process. + - Works at the pod node-selection stage. + +## Source Overview + +```go +// Example snippet from binpack.go +func New(arguments framework.Arguments) framework.Plugin { + return &binPackPlugin{pluginArguments: arguments} +} +``` +The full implementation includes functions for scoring nodes, handling resource weights, and integrating with the scheduling session. + +## Example Configuration + +To enable the BinPack plugin, add it to the scheduler configuration: + +```yaml +# scheduler configuration +actions: "enqueue, allocate, preempt" +tiers: +- plugins: + - name: binpack + arguments: + binpack.cpu: 5 + binpack.memory: 1 +``` +### Configuration Parameters + +| Parameter | Description | Default | +|-----------|-------------|---------| +| `binpack.cpu` | Weight for CPU resources in scoring | 5 | +| `binpack.memory` | Weight for memory resources in scoring | 1 | +| `binpack.gpu` | Weight for GPU resources in scoring | 0 | + +## Usage Scenarios + +BinPack is particularly useful for: + +- **Batch processing jobs** where maximizing node utilization reduces cost +- **Single query jobs** that run quickly and benefit from efficient packing +- **High-concurrency services** with many small pods that can be packed onto fewer nodes +- **Cloud cost optimization** where reducing node count minimizes infrastructure costs + +## Metrics + +The plugin provides the following metrics: + +- `binpack_node_score`: Score assigned to each node during scheduling +- `binpack_resource_utilization`: Resource usage percentage after packing +- `binpack_fragmentation_reduction`: Improvement in node fragmentation over time diff --git a/content/en/docs/v1-12-0/gang.md b/content/en/docs/v1-12-0/gang.md new file mode 100644 index 00000000..9fa62edf --- /dev/null +++ b/content/en/docs/v1-12-0/gang.md @@ -0,0 +1,96 @@ ++++ +title = "Gang" +date = 2024-01-01 +lastmod = 2024-01-01 +draft = false +toc = true +type = "docs" + +# Add menu entry to sidebar. +linktitle = "Gang" +[menu.v1-12-0] + parent = "plugins" + weight = 2 ++++ + + + +{{
}} + + +The **Gang Plugin** in Volcano enforces gang scheduling constraints, ensuring that a group of related tasks (a "gang") is scheduled together. This plugin is responsible for validating jobs, managing preemption, pipelining, and detecting job starvation. + +## Plugin Details + +- **Plugin Name:** `gang` +- **Location in source:** `pkg/scheduler/plugins/gang/gang.go` +- **Purpose:** Ensures gang scheduling constraints and job readiness for tasks and sub-jobs. + +## Features + +1. **Job Validation** + - Validates tasks and sub-jobs for gang scheduling. + - Checks minimum required tasks (`MinAvailable`) before scheduling. + +2. **Preemption** + - Determines which tasks can be preempted without violating gang scheduling constraints. + - Tracks ready task counts per job to maintain scheduling guarantees. + +3. **Job Ordering** + - Orders jobs and sub-jobs based on readiness. + - Ready jobs have higher priority over non-ready jobs. + +4. **Pipelining** + - Allows pipelined scheduling when tasks and sub-jobs meet pipelined conditions. + +5. **Starvation Detection** + - Detects jobs that cannot be scheduled due to insufficient resources. + +## Source Overview + +```go +// Example snippet from gang.go +func New(arguments framework.Arguments) framework.Plugin { + return &gangPlugin{pluginArguments: arguments} +} +``` +The full implementation includes functions for `OnSessionOpen`, `OnSessionClose`, job validation, preemption, pipelining, and readiness checks. + +## Example Configuration + +To enable the Gang plugin, add it to the scheduler configuration: + +```yaml +# scheduler configuration +actions: "enqueue, allocate, preempt" +tiers: +- plugins: + - name: gang + arguments: + gang.schedule.timeout: 600 + gang.schedule.retry: 5 +``` +### Configuration Parameters + +| Parameter | Description | Default | +|-----------|-------------|---------| +| `gang.schedule.timeout` | Timeout in seconds for gang scheduling | 600 | +| `gang.schedule.retry` | Number of retry attempts for gang scheduling | 5 | + +## Usage Scenarios + +Gang scheduling is typically used for: + +- **Distributed training jobs** where all workers must start together +- **MPI jobs** that require all processes to be running simultaneously +- **Batch processing workloads** with task dependencies +- **Big data analytics** where partial execution is not meaningful + +## Metrics + +The plugin provides the following metrics: + +- `gang_job_ready`: Number of jobs ready for gang scheduling +- `gang_job_starved`: Jobs that cannot be scheduled due to resource constraints +- `gang_job_retry_count`: Number of retry attempts for gang jobs +- `gang_scheduling_latency`: Time taken to schedule gang jobs diff --git a/content/en/docs/v1-12-0/plugins.md b/content/en/docs/v1-12-0/plugins.md deleted file mode 100644 index 1b78643a..00000000 --- a/content/en/docs/v1-12-0/plugins.md +++ /dev/null @@ -1,176 +0,0 @@ -+++ -title = "Plugins" - -date = 2021-05-13 -lastmod = 2021-05-13 - -draft = false # Is this a draft? true/false -toc = true # Show table of contents? true/false -type = "docs" # Do not modify. - -# Add menu entry to sidebar. -linktitle = "Plugins" -[menu.v1-12-0] - parent = "scheduler" - weight = 3 -+++ - - - -### Gang - -{{
}} - -#### Overview - -The Gang scheduling strategy is one of the core scheduling algorithms of the Volcano-Scheduler. It meets the scheduling requirements of "All or nothing" in the scheduling process and avoids the waste of cluster resources caused by arbitrary scheduling of Pod. The Gang scheduler algorithm is to observe whether the scheduled number of Pods under Job meets the minimum number of runs. When the minimum number of runs of Job is satisfied, the scheduling action is executed for all Pods under Job; otherwise, it is not executed. - -#### Scenario - -The Gang scheduling algorithm based on the container group concept is well suited for scenarios that require multi-process collaboration. AI scenes often contain complex processes. Data Ingestion, Data Analysts, Data Splitting, trainers, Serving, Logging, etc., which require a group of containers to work together, are suitable for container-based Gang scheduling strategies. Multi-thread parallel computing communication scenarios under MPI computing framework are also suitable for Gang scheduling because master and slave processes need to work together. Containers under the container group are highly correlated, and there may be resource contention. The overall scheduling allocation can effectively solve the deadlock. - -In the case of insufficient cluster resources, the scheduling strategy of Gang can significantly improve the utilization of cluster resources. - -### Binpack - -#### Overview - -The goal of the BinPack scheduling algorithm is to fill as many existing nodes as possible (try not to allocate blank nodes). In the concrete implementation, BinPack scheduling algorithm scores the nodes that can be delivered, and the higher the score, the higher the resource utilization rate of nodes. Binpack algorithm can fill up the nodes as much as possible to close the application load to some nodes, which is very conducive to the automatic expansion capacity function of K8s cluster nodes. - -The BinPack algorithm is injected into the Volcano-Scheduler process as a plug-in and will be applied during the Pod stage of node selection. When calculating the Binpack algorithm, the Volcano-Scheduler considers the various resources requested by Pod and averages them according to the weights configured for each resource. The weight of each resource in the node score calculation is different, depending on the weight value configured by the administrator for each resource. Different plug-ins also need to assign different weights when calculating node scores, and the Scheduler also sets the score weights for BinPack plugins. - -#### Scenario - -The BinPack algorithm is good for small jobs that can fill as many nodes as possible. For example, the single query job in the big data scene, the order generation in the e-commerce seckill scene, the single identification job in the AI scene, and the high concurrency service scene on the Internet, etc. This scheduling algorithm can reduce the fragmentation in the node as much as possible, and reserve enough resource space on the idle machine for Pod which has applied for more resource requests, so as to maximize the utilization of idle resources under the cluster. - - - -### Priority - -{{
}} - -#### Overview - -The Priority Plugin provides the implementation of job, Task sorting, and PreempTablefn, a function that calculates sacrifice jobs. Job sorting according to priorityClassName, the task of sorting by priorityClassName, createTime, id in turn. - -#### Scenario - -When the cluster runs multiple jobs but is low on resources, and each Job has a different number of Pods waiting to be scheduled, if you use the Kubernetes default scheduler, the Job with more Pods will eventually get more of the cluster's resources. In this case, the Volcano-Scheduler provides algorithms that enable different jobs to share cluster resources in a fair-share. - -The Priority Plugin enables users to customize their job and task priorities, and to customize scheduling policies at different levels according to their own needs. Priority is arranged according to Job's PriorityClassName at the application level. For example, there are financial scenarios, Internet of Things monitoring scenarios and other applications requiring high real-time performance in the cluster, and the Priority Plugin can ensure that they are scheduled in Priority. - - - -### DRF - -{{
}} - -#### Overview - -The full name of DRF scheduling algorithm is Dominant Resource Fairness, which is a scheduling algorithm based on the container group Dominant Resource. Dominant Resource is the largest percentage of all required resources for a container group. The DRF algorithm selects the Dominant Resource that is the smallest in a series of container groups for priority scheduling. This can meet more job, not because a fat business, starve a large number of small business. DRF scheduling algorithm can ensure that many types of resources coexist in the environment, as far as possible to meet the fair principle of allocation. - -#### Scenario - -The DRF scheduling algorithm gives priority to the throughput of the business in the cluster and is suitable for batch small business scenarios such as a single AI training, a single big data calculation and a query. - - - -### Proportion - -#### Overview - -Proportion scheduling algorithm uses the concept of queue to control the Proportion of total resources allocated in the cluster. Each queue allocates a certain proportion of cluster resources. For example, there are three teams that share A pool of resources on A cluster: Team A uses up to 40% of the total cluster, Team B uses up to 30%, and Team C uses up to 30%. If the amount of work delivered exceeds the team's maximum available resources, there is a queue. - -#### Scenario - -Proportion scheduling algorithm improves the flexibility and elasticity of cluster scheduling. The most typical scenario is that when multiple development teams in a company share a cluster, this scheduling algorithm can handle the requirements of shared resource matching and isolation between different departments very well. In multi-service mixed scenarios, such as computation-intensive AI business, network IO-intensive MPI and HPC business, and storage-intensive big data business, Proportion scheduling algorithm can allocate shared resources according to demand through matching. - - - -### Task-topology - -#### Overview - -The task-topology algorithm is an algorithm that computes the priority of tasks and nodes based on the affinity and anti-affinity configuration between tasks within a Job. By configuring the affinity and anti-affinity policies between tasks within the Job and using the Task-Topology algorithm, tasks with affinity configurations can be scheduled to the same node first, and PODs with anti-affinity configurations to different nodes. - -#### Scenario - -node affinity: - -- Task-topology is important for improving computational efficiency in deep learning computing scenarios. Using the TensorFlow calculation as an example, configure the affinity between "ps" and "worker". Task-topology algorithm enables "ps" and "worker" to be scheduled to the same node as far as possible, so as to improve the efficiency of network and data interaction between "ps" and "worker", thus improving the computing efficiency. -- Tasks in HPC and MPI scenarios are highly synchronized and need high-speed network IO. - -Anti-affinity: - -- Take the TensorFlow calculation as an example, the anti-affinity between "ps" and "ps" - -- Master and slave backup of e-commerce service scene, data disaster tolerant, to ensure that there are spare jobs to continue to provide service after a job fails. - - - -### Predicates - -#### Overview - -The Predicate Plugin calls the PredicateGPU with pod and nodeInfo as parameters to evaluate and pre-select jobs based on the results. - -#### Scenario - -In AI scenarios where GPU resources are required, the Predicate Plugin can quickly filter out those that require the GPU for centralized scheduling. - - -### Nodeorder - -#### Overview - -The NodeOrder Plugin is a scheduling optimization strategy that scores nodes from various dimensions through simulated assignments to find the node that is best suited for the current job. The scoring parameters are configured by the user. The parameter contains the Affinity、reqResource、LeastReqResource、MostResource、balanceReqResouce. - -#### Scenario - -NodeOrder Plugin provides scoring criteria of multiple dimensions for scheduling, and the combination of different dimensions enables users to flexibly configure appropriate scheduling policies according to their own needs. - - - -### SLA - -#### Overview - -When users apply jobs to Volcano, they may need adding some particular constraints to job, for example, longest Pending time aiming to prevent job from starving. And these constraints can be regarded as Service Level Agreement (SLA) which are agreed between volcano and user. So sla plugin is provided to receive and realize SLA settings for both individual job and whole cluster. - -#### Scenario - -Users can customize SLA related parameters in their own cluster according to business needs. For example, for clusters with high real-time service requirements, JobWaitingTime can be set as small as possible. For clusters with bulk computing jobs, JobWaitingTime can be set to larger. The parameters of a specific SLA and the optimization of the parameters need to be combined with the specific business and related performance measurement results. - -### TDM - -#### Overview - -The full name of TDM is Time Division Multiplexing. In a co-located environment, some nodes are in both Kubernetes cluster and Yarn cluster. For these nodes, Kubernetes and Yarn cluster can use these resource by time-sharing multiplexing.The TDM Plugin marks these nodes as `revocable nodes`. TDM plugin will try to dispatch `preemptable task` to `revocable node` in node revocable time and evict the `preemptable task` from `revocable node` out of revocable time.. TDM Plugin improves the time-division multiplexing ability of node resources in the scheduling process of Volcano. - -#### Scenario - -In ToB business, cloud vendors provide cloud-based resources for merchants, and different merchants adopt different container arrangement frameworks (Kubernetes/YARN, etc.). TDM Plugin improves the time-sharing efficiency of common node resources and further improves the utilization rate of resources. - - - -### Numa-aware - -#### Overview - -When the node runs many CPU-bound pods, the workload can move to different CPU cores depending on whether the pod is throttled and which CPU cores are available at scheduling time. Many workloads are not sensitive to this migration and thus work fine without any intervention. However, in workloads where CPU cache affinity and scheduling latency significantly affect workload performance, the kubelet allows alternative CPU management policies to determine some placement preferences on the node. - -The CPU Manager and the Topology Manager are all Kubelet components, However There is the following limitation: - -- The scheduler is not topology-aware. so it is possible to be scheduled on a node and then fail on the node due to the Topology Manager. this is unacceptable for TensorFlow job. If any worker or ps failed on node, the job will fail. -- The managers are node-level that results in an inability to match the best node for NUMA topology in the whole cluster. - -The Numa-Aware Plugin aims to address these limitations. - -- Support cpu resource topology scheduling. -- Support pod-level topology policies. - -#### Scenario - -Common scenarios for NUMA-Aware are computation-intensive jobs that are sensitive to CPU parameters, scheduling delays. Such as scientific calculation, video decoding, animation rendering, big data offline processing and other specific scenes. - - diff --git a/content/en/docs/v1-12-0/priority.md b/content/en/docs/v1-12-0/priority.md new file mode 100644 index 00000000..ae8a5dff --- /dev/null +++ b/content/en/docs/v1-12-0/priority.md @@ -0,0 +1,82 @@ ++++ +title = "Priority" +date = 2024-01-01 +lastmod = 2024-01-01 +draft = false +toc = true +type = "docs" + +# Add menu entry to sidebar. +linktitle = "Priority" +[menu.v1-12-0] + parent = "plugins" + weight = 3 ++++ + +{{
}} + +The **Priority Plugin** in Volcano enforces job, task, and sub-job priority scheduling. +It allows fair resource allocation based on `PriorityClassName`, and supports preemption and starvation detection. + +## Plugin Details + +- **Plugin Name:** `priority` +- **Location in source:** `pkg/scheduler/plugins/priority/priority.go` +- **Purpose:** Orders tasks, jobs, and sub-jobs by priority; manages preemption and starvation. + +## Features + +1. **Task, Job, Sub-job Ordering** + - Sorts tasks, jobs, and sub-jobs according to their priority. + +2. **Preemption** + - Preempts lower-priority tasks or jobs if resources are insufficient. + +3. **Job Starvation Detection** + - Detects jobs that cannot progress due to resource limitations. + +## Source Overview + +```go +// Example snippet from priority.go +func New(arguments framework.Arguments) framework.Plugin { + return &priorityPlugin{pluginArguments: arguments} +} +``` +## Example Configuration +To enable the Priority plugin, add it to the scheduler configuration: + +```yaml +# scheduler configuration +actions: "enqueue, allocate, preempt" +tiers: +- plugins: + - name: priority + arguments: + priority.default: 10 + priority.preemption: true +``` +### Configuration Parameters + +| Parameter | Description | Default | +|-----------|-------------|---------| +| `priority.default` | Default priority value for jobs without explicit priority | 10 | +| `priority.preemption` | Enable or disable preemption for priority scheduling | true | + +## Usage Scenarios + +Priority scheduling is suitable for workloads where certain jobs require faster scheduling or higher resource guarantees, such as: + +- **Financial applications** where latency-sensitive transactions need priority +- **IoT monitoring** where critical alerts require immediate processing +- **Real-time AI processing** where inference requests have higher priority +- **Multi-tenant clusters** where different teams have different service levels + +## Metrics + +The plugin provides the following metrics: + +- `priority_preemption_count`: Number of preemption events triggered by priority +- `priority_scheduling_latency`: Scheduling delay for high-priority jobs +- `priority_allocation_ratio`: Resource allocation ratio across priority levels +- `priority_job_starved`: Number of jobs starving due to priority constraints diff --git a/resources/_gen/images/author/admin/avatar_hu13676304118c001ee9d3215c0a6faca5_22204_250x250_fill_q75_box_center.jpg b/resources/_gen/images/author/admin/avatar_hu13676304118c001ee9d3215c0a6faca5_22204_250x250_fill_q75_box_center.jpg deleted file mode 100644 index fd7258b3e357893449a304ae35738af6afb18451..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7975 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 PXhd*9fBj(y7(erG=a)b< diff --git a/resources/_gen/images/author/admin/avatar_hu159c91c4ee77ab95704943cbcaa51349_26591_250x250_fill_q75_box_center.jpg b/resources/_gen/images/author/admin/avatar_hu159c91c4ee77ab95704943cbcaa51349_26591_250x250_fill_q75_box_center.jpg deleted file mode 100644 index 895170518bd976b88abc3df87c16d38428b3d098..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8560 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 diff --git a/resources/_gen/images/author/admin/avatar_hu52a603635ecebd45650b162dadabb4e5_12861_250x250_fill_q75_box_center.jpg b/resources/_gen/images/author/admin/avatar_hu52a603635ecebd45650b162dadabb4e5_12861_250x250_fill_q75_box_center.jpg deleted file mode 100644 index 6763f87f66ab27e4936e06c7db0926c84a88511e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3653 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 DK4nKe diff --git a/resources/_gen/images/author/admin/avatar_hu64fe02337e89a1e07746ab0fd5be2099_26240_250x250_fill_q75_box_center.jpg b/resources/_gen/images/author/admin/avatar_hu64fe02337e89a1e07746ab0fd5be2099_26240_250x250_fill_q75_box_center.jpg deleted file mode 100644 index 6284216f83995806aabc9b743f126ecbefd1bda1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7795 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 diff --git a/resources/_gen/images/author/admin/avatar_huc5b0a461a3b0ae065a49b418db6788b2_27518_250x250_fill_q75_box_center.jpg b/resources/_gen/images/author/admin/avatar_huc5b0a461a3b0ae065a49b418db6788b2_27518_250x250_fill_q75_box_center.jpg deleted file mode 100644 index fb69d0f7420009b688a635991712a56ecc9dc42c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8328 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 bcW^=KVf=B*xozQhf1c!}RivsU-Ut65{W}_E From a559732a7d702a6f39051d9319461596a1fccb26 Mon Sep 17 00:00:00 2001 From: MIKE-4-prog Date: Tue, 7 Apr 2026 13:12:28 +0100 Subject: [PATCH 2/2] fix: correct plugin documentation based on review feedback - Remove redundant [[plugins]] menu block from menus.toml - Remove non-existent metrics sections from all three plugins - Fix Gang plugin configuration (timeout parameter only) - Remove unsupported arguments from Priority plugin - Clean up working configuration comment in menus.toml Signed-off-by: MIKE-4-prog --- config/_default/menus.toml | 9 +-------- content/en/docs/v1-12-0/binpack.md | 7 ------- content/en/docs/v1-12-0/gang.md | 16 ++-------------- content/en/docs/v1-12-0/priority.md | 18 +----------------- 4 files changed, 4 insertions(+), 46 deletions(-) diff --git a/config/_default/menus.toml b/config/_default/menus.toml index 04c01230..11072d94 100644 --- a/config/_default/menus.toml +++ b/config/_default/menus.toml @@ -95,7 +95,7 @@ identifier = "contribution" -# Documentation version v1.12.0 (WORKING CONFIGURATION) +# Documentation version v1.12.0 [[v1-12-0]] name = "Home" @@ -152,13 +152,6 @@ identifier = "contribution" -# Plugins menu for the Academic theme (required for frontmatter) -[[plugins]] - name = "Plugins" - weight = 1 - identifier = "plugins" - - # Documentation version v1.11.0 [[v1-11-0]] diff --git a/content/en/docs/v1-12-0/binpack.md b/content/en/docs/v1-12-0/binpack.md index d40e0bfb..a5319585 100644 --- a/content/en/docs/v1-12-0/binpack.md +++ b/content/en/docs/v1-12-0/binpack.md @@ -81,10 +81,3 @@ BinPack is particularly useful for: - **High-concurrency services** with many small pods that can be packed onto fewer nodes - **Cloud cost optimization** where reducing node count minimizes infrastructure costs -## Metrics - -The plugin provides the following metrics: - -- `binpack_node_score`: Score assigned to each node during scheduling -- `binpack_resource_utilization`: Resource usage percentage after packing -- `binpack_fragmentation_reduction`: Improvement in node fragmentation over time diff --git a/content/en/docs/v1-12-0/gang.md b/content/en/docs/v1-12-0/gang.md index 9fa62edf..25f9c486 100644 --- a/content/en/docs/v1-12-0/gang.md +++ b/content/en/docs/v1-12-0/gang.md @@ -62,14 +62,10 @@ To enable the Gang plugin, add it to the scheduler configuration: ```yaml # scheduler configuration -actions: "enqueue, allocate, preempt" -tiers: -- plugins: - - name: gang arguments: - gang.schedule.timeout: 600 - gang.schedule.retry: 5 + timeout: 600 ``` + ### Configuration Parameters | Parameter | Description | Default | @@ -86,11 +82,3 @@ Gang scheduling is typically used for: - **Batch processing workloads** with task dependencies - **Big data analytics** where partial execution is not meaningful -## Metrics - -The plugin provides the following metrics: - -- `gang_job_ready`: Number of jobs ready for gang scheduling -- `gang_job_starved`: Jobs that cannot be scheduled due to resource constraints -- `gang_job_retry_count`: Number of retry attempts for gang jobs -- `gang_scheduling_latency`: Time taken to schedule gang jobs diff --git a/content/en/docs/v1-12-0/priority.md b/content/en/docs/v1-12-0/priority.md index ae8a5dff..ac616eae 100644 --- a/content/en/docs/v1-12-0/priority.md +++ b/content/en/docs/v1-12-0/priority.md @@ -52,16 +52,8 @@ actions: "enqueue, allocate, preempt" tiers: - plugins: - name: priority - arguments: - priority.default: 10 - priority.preemption: true + # Priority plugin uses Pod PriorityClassName - no arguments needed ``` -### Configuration Parameters - -| Parameter | Description | Default | -|-----------|-------------|---------| -| `priority.default` | Default priority value for jobs without explicit priority | 10 | -| `priority.preemption` | Enable or disable preemption for priority scheduling | true | ## Usage Scenarios @@ -72,11 +64,3 @@ Priority scheduling is suitable for workloads where certain jobs require faster - **Real-time AI processing** where inference requests have higher priority - **Multi-tenant clusters** where different teams have different service levels -## Metrics - -The plugin provides the following metrics: - -- `priority_preemption_count`: Number of preemption events triggered by priority -- `priority_scheduling_latency`: Scheduling delay for high-priority jobs -- `priority_allocation_ratio`: Resource allocation ratio across priority levels -- `priority_job_starved`: Number of jobs starving due to priority constraints