Add UI for cpu pinning (#652)

* add ui for cpu pinning

* create "advanced" section
This commit is contained in:
Boy132 2024-10-22 23:34:46 +02:00 committed by GitHub
parent 6655ccca6e
commit 94420d06be
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 85 additions and 3 deletions

View File

@ -627,14 +627,24 @@ class CreateServer extends CreateRecord
->minValue(0) ->minValue(0)
->helperText('100% equals one CPU core.'), ->helperText('100% equals one CPU core.'),
]), ]),
]),
Fieldset::make('Advanced Limits')
->columnSpan(6)
->columns([
'default' => 1,
'sm' => 2,
'md' => 3,
'lg' => 3,
])
->schema([
Grid::make() Grid::make()
->columns(4) ->columns(4)
->columnSpanFull() ->columnSpanFull()
->schema([ ->schema([
ToggleButtons::make('swap_support') ToggleButtons::make('swap_support')
->live() ->live()
->label('Enable Swap Memory') ->label('Swap Memory')
->inlineLabel() ->inlineLabel()
->inline() ->inline()
->columnSpan(2) ->columnSpan(2)
@ -681,6 +691,36 @@ class CreateServer extends CreateRecord
->label('Block IO Proportion') ->label('Block IO Proportion')
->default(500), ->default(500),
Grid::make()
->columns(4)
->columnSpanFull()
->schema([
ToggleButtons::make('cpu_pinning')
->label('CPU Pinning')->inlineLabel()->inline()
->default(false)
->afterStateUpdated(fn (Set $set) => $set('threads', []))
->live()
->options([
false => 'Disabled',
true => 'Enabled',
])
->colors([
false => 'success',
true => 'warning',
])
->columnSpan(2),
TagsInput::make('threads')
->dehydratedWhenHidden()
->hidden(fn (Get $get) => !$get('cpu_pinning'))
->label('Pinned Threads')->inlineLabel()
->required()
->columnSpan(2)
->separator()
->splitKeys([','])
->placeholder('Add pinned thread, e.g. 0 or 2-4'),
]),
Grid::make() Grid::make()
->columns(4) ->columns(4)
->columnSpanFull() ->columnSpanFull()

View File

@ -24,10 +24,12 @@ use Filament\Forms\Components\Actions\Action;
use Filament\Forms\Components\CheckboxList; use Filament\Forms\Components\CheckboxList;
use Filament\Forms\Components\Fieldset; use Filament\Forms\Components\Fieldset;
use Filament\Forms\Components\Grid; use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Hidden;
use Filament\Forms\Components\Repeater; use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Select; use Filament\Forms\Components\Select;
use Filament\Forms\Components\Tabs; use Filament\Forms\Components\Tabs;
use Filament\Forms\Components\Tabs\Tab; use Filament\Forms\Components\Tabs\Tab;
use Filament\Forms\Components\TagsInput;
use Filament\Forms\Components\Textarea; use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput; use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\ToggleButtons; use Filament\Forms\Components\ToggleButtons;
@ -263,14 +265,23 @@ class EditServer extends EditRecord
->numeric() ->numeric()
->minValue(0), ->minValue(0),
]), ]),
]),
Fieldset::make('Advanced Limits')
->columns([
'default' => 1,
'sm' => 2,
'md' => 3,
'lg' => 3,
])
->schema([
Grid::make() Grid::make()
->columns(4) ->columns(4)
->columnSpanFull() ->columnSpanFull()
->schema([ ->schema([
ToggleButtons::make('swap_support') ToggleButtons::make('swap_support')
->live() ->live()
->label('Enable Swap Memory')->inlineLabel()->inline() ->label('Swap Memory')->inlineLabel()->inline()
->columnSpan(2) ->columnSpan(2)
->afterStateUpdated(function ($state, Set $set) { ->afterStateUpdated(function ($state, Set $set) {
$value = match ($state) { $value = match ($state) {
@ -315,10 +326,41 @@ class EditServer extends EditRecord
->integer(), ->integer(),
]), ]),
Forms\Components\Hidden::make('io') Hidden::make('io')
->helperText('The IO performance relative to other running containers') ->helperText('The IO performance relative to other running containers')
->label('Block IO Proportion'), ->label('Block IO Proportion'),
Grid::make()
->columns(4)
->columnSpanFull()
->schema([
ToggleButtons::make('cpu_pinning')
->label('CPU Pinning')->inlineLabel()->inline()
->default(false)
->afterStateUpdated(fn (Set $set) => $set('threads', []))
->formatStateUsing(fn (Get $get) => !empty($get('threads')))
->live()
->options([
false => 'Disabled',
true => 'Enabled',
])
->colors([
false => 'success',
true => 'warning',
])
->columnSpan(2),
TagsInput::make('threads')
->dehydratedWhenHidden()
->hidden(fn (Get $get) => !$get('cpu_pinning'))
->label('Pinned Threads')->inlineLabel()
->required()
->columnSpan(2)
->separator()
->splitKeys([','])
->placeholder('Add pinned thread, e.g. 0 or 2-4'),
]),
Grid::make() Grid::make()
->columns(4) ->columns(4)
->columnSpanFull() ->columnSpanFull()