---
title: Ogólne Modyfikacje Systemu
description: Rzeczy, które możesz zrobić, aby dostosować system po instalacji
tableOfContents:
  minHeadingLevel: 1
  maxHeadingLevel: 4
---

import { Tabs, TabItem, Steps } from '@astrojs/starlight/components';
import ImageComponent from '~/components/image-component.astro';

## Modyfikacje wydajności dla AMD

### Sterownik AMD P-State
---------------------------

`amd-pstate` to sterownik skalowania wydajności procesorów AMD, który wprowadza w jądrze Linux nowy mechanizm kontroli częstotliwości procesora dla nowoczesnych serii APU i CPU od AMD. Nowy mechanizm opiera się na Collaborative Processor Performance Control (CPPC), co zapewnia bardziej precyzyjne zarządzanie częstotliwością niż przestarzałe stany P sprzętu ACPI.

Obecne platformy CPU/APU od AMD używają sterownika stanów P ACPI do zarządzania częstotliwością i taktowaniem procesora, przełączając się tylko między 3 stanami P. CPPC zastępuje kontrolę stanów P ACPI i pozwala na elastyczny, niskolatencyjny interfejs dla jądra Linux, aby bezpośrednio przekazywać wskazówki dotyczące wydajności do sprzętu.

Poniżej znajdują się 3 tryby działania sterownika `amd_pstate` oraz wpisy wiersza poleceń jądra, aby używać ich podczas uruchamiania systemu:

- AMD P-State (Tryb nieautonomiczny): `amd_pstate=passive`
- AMD P-State Guided (Tryb kierowany autonomiczny): `amd_pstate=guided`
- AMD P-State EPP (Tryb autonomiczny): `amd_pstate=active`

:::note
Sterownik AMD P-State EPP jest używany domyślnie, gdy nie dokonano jawnej konfiguracji.
:::

Możesz również przełączać się między trybami działania w czasie rzeczywistym, aby przetestować opcje:

- **Tryb autonomiczny**: platforma bierze pod uwagę tylko wartości ustawione dla minimalnej wydajności, maksymalnej wydajności i preferencji wydajności energetycznej.
   ```sh
   echo active | sudo tee /sys/devices/system/cpu/amd_pstate/status
   ```

- **Tryb kierowany autonomiczny**: platforma ustawia poziom wydajności operacyjnej zgodnie z bieżącym obciążeniem i w granicach ustalonych przez system operacyjny poprzez rejestry minimalnej i maksymalnej wydajności.
   ```sh
   echo guided | sudo tee /sys/devices/system/cpu/amd_pstate/status
   ```

- **Tryb nieautonomiczny**: platforma pobiera pożądany poziom wydajności bezpośrednio od systemu operacyjnego poprzez rejestr pożądanej wydajności.
   ```sh
   echo passive | sudo tee /sys/devices/system/cpu/amd_pstate/status
   ```

Więcej informacji:

*   [https://www.kernel.org/doc/html/v6.9/admin-guide/pm/amd-pstate.html](https://www.kernel.org/doc/html/v6.9/admin-guide/pm/amd-pstate.html)
*   [https://lore.kernel.org/lkml/20221110175847.3098728-1-Perry.Yuan@amd.com/](https://lore.kernel.org/lkml/20221110175847.3098728-1-Perry.Yuan@amd.com/)
*   [https://lore.kernel.org/lkml/20230119115017.10188-1-wyes.karny@amd.com/](https://lore.kernel.org/lkml/20230119115017.10188-1-wyes.karny@amd.com/)

### Konfiguracja AMD P-State EPP


Aby używać P-State EPP, dostępne są dwa zarządce skalowania częstotliwości procesora: `powersave` i `performance`. Zaleca się używanie zarządcy `powersave` i ustawienie preferencji.

*   Ustaw zarządcę powersave: `sudo cpupower frequency-set -g powersave`
*   Ustaw zarządcę performance: `sudo cpupower frequency-set -g performance`

Aby ustawić preferencję, uruchom następujące polecenie z pożądaną preferencją:

```sh
echo power | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference
```

Dostępne preferencje: `performance`, `power`, `balance_power`, `balance_performance`

Benchmarki dla każdej preferencji można znaleźć tutaj:
[https://lore.kernel.org/lkml/20221219064042.661122-1-perry.yuan@amd.com/](https://lore.kernel.org/lkml/20221219064042.661122-1-perry.yuan@amd.com/)

### Optymalizator AMD 3D V-Cache

AMD opublikowało łatkę optymalizującą planowanie pamięci podręcznej na procesorach 3D z podwójnym CCD, takich jak 7950X3D i 7900X3D.
Musisz ustawić w BIOSie opcję CPPC na "Driver". Umożliwi to nadpisanie używanego trybu za pomocą sysfs.

Dostępne są dwa tryby:
1. Frequency (Częstotliwość)
2. Cache (Pamięć podręczna)

Jeśli ustawiono `cache`, sterownik będzie próbował umieszczać zadania w pierwszej kolejności na CCD z większą pamięcią podręczną, co jest głównie korzystne w grach.
Opcja `frequency` będzie próbowała umieszczać zadania na drugim CCD, który ma wyższą częstotliwość niż CCD z pamięcią podręczną 3D.

Frequency (Domyślnie):
```sh
echo frequency | sudo tee /sys/bus/platform/drivers/amd_x3d_vcache/AMDI0101:00/amd_x3d_mode
```

Cache:
```sh
echo cache | sudo tee /sys/bus/platform/drivers/amd_x3d_vcache/AMDI0101:00/amd_x3d_mode
```

Po zmianie trybów, statystyki preferowanych rdzeni AMD powinny pokazywać inny ranking. Możesz go odczytać za pomocą:
```sh
grep -v /sys/devices/system/cpu/cpu*/cpufreq/amd_pstate_prefcore_ranking
```

### AMD P-State Core Performance Boost

AMD Core Performance Boost, znane również jako AMD Turbo Core, to technologia dynamicznego skalowania częstotliwości firmy AMD, która pozwala
procesorowi dynamicznie dostosowywać i kontrolować częstotliwość pracy w niektórych wersjach swoich procesorów,
co pozwala na zwiększoną wydajność w razie potrzeby przy jednoczesnym zachowaniu niższych parametrów mocy i termicznych podczas normalnej pracy.

Od wersji `linux-cachyos` 6.9.6, jądro jest załatane wsparciem dla CPB dla sterowników p-state AMD (w tym `passive`, `active` i `guided`).
Użytkownicy mogą zmieniać stan boost każdego rdzenia procesora za pomocą pliku boost w sysfs `/sys/devices/system/cpu/cpuX/cpufreq/boost`
(X odnosi się do numeru rdzenia, np. cpu0 to pierwszy rdzeń, cpu1 drugi, itd.).

```sh
❯ echo 0 | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/boost # Wyłącz boost dla wszystkich rdzeni
❯ lscpu -ae # To pokazuje, że AMD CPB jest globalnie wyłączone
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE    MAXMHZ   MINMHZ       MHZ
  0    0      0    0 0:0:0:0          yes 3301.0000 400.0000 1212.8250
  1    0      0    0 0:0:0:0          yes 3301.0000 400.0000 1394.2180
  2    0      0    1 1:1:1:0          yes 3301.0000 400.0000 1204.4600

❯ echo 1 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/boost # Włącza boost na cpu0
❯ lscpu -ae
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE    MAXMHZ   MINMHZ       MHZ
  0    0      0    0 0:0:0:0          yes 4564.0000 400.0000 1393.2380
  1    0      0    0 0:0:0:0          yes 3301.0000 400.0000  400.0000
  2    0      0    1 1:1:1:0          yes 3301.0000 400.0000 2157.8469
```

CachyOS dostarcza również wersję `power-profiles-daemon`, która wprowadza commit
zapewniający wsparcie dla AMD CPB. AMD CPB zostanie wyłączone, jeśli używany jest profil `powersave`, a włączone w profilach `balanced` lub `performance`.

Więcej informacji znajdziesz na:
- https://lore.kernel.org/linux-pm/1a78eeaa-fadd-4734-aaeb-2fe11e96e198@amd.com/T/#m4a0c8917ea8fb033504055bd61512c80c85410c8
- https://lore.kernel.org/linux-pm/20240624213400.67773-1-mario.limonciello@amd.com/

## Ulepszenia wydajności

### [ADIOS I/O Scheduler](https://github.com/firelzrd/adios)

Stworzony przez [firelzrd](https://github.com/firelzrd)

:::note
CachyOS zawiera stabilną gałąź ADIOS w jądrze.

Obecna wersja w **linux-cachyos**: `3.1.7`

Obecna wersja w **linux-cachyos-rc**: `3.1.7`
:::

Krótkie wprowadzenie z pliku README:

- *ADIOS (Adaptive Deadline I/O Scheduler) to planista I/O warstwy blokowej dla jądra Linux, zaprojektowany dla nowoczesnych urządzeń blokowych z wieloma kolejkami (blk-mq). Ma na celu zapewnienie niskiej latencji dla operacji I/O poprzez połączenie zasad planowania deadline z opartym na uczeniu się adaptacyjnym mechanizmem kontroli latencji.*
  - *Zainspirowany i oparty na koncepcjach z planistów I/O mq-deadline i Kyber. Jego główną cechą jest zdolność do przewidywania latencji ukończenia operacji I/O na podstawie wcześniejszych wyników i charakterystyki żądania (typ operacji, rozmiar) oraz wykorzystanie tej prognozy do dynamicznego dostosowywania terminów żądań i zachowania grupowania.*

TLDR: ADIOS działa, ucząc się profilu opóźnień Twojego urządzenia pamięci masowej i wykorzystując tę wiedzę do dynamicznego ustawiania terminów dla żądań I/O. Priorytetyzuje żądania na czterech poziomach, od krytycznych operacji systemowych (Poziom 0) do zadań w tle (Poziom 3), aby zapewnić płynne działanie. Chociaż koncentruje się na responsywności, jego zachowanie można dostroić za pomocą ustawień sysfs, aby zrównoważyć opóźnienia i przepustowość.

Prezentację na żywo możesz obejrzeć w tym [filmie](https://www.youtube.com/watch?v=L9WDcEeHgy4)

#### Jak włączyć ADIOS

<Tabs>
    <TabItem label='Tymczasowo (działa w czasie rzeczywistym)'>
        Ta metoda ustawia planistę dla bieżącej sesji. Zmiana zostanie utracona po ponownym uruchomieniu.
        ```sh
        sync && echo adios | sudo tee /sys/block/<twoj_dysk>/queue/scheduler
            # Zastąp <twoj_dysk> faktycznym identyfikatorem dysku (np. sda, sdb, nvme0n1)
        ```
    </TabItem>
    <TabItem label='Trwale po restarcie'>
        <Steps>
            1. Otwórz lub utwórz nowy plik z regułami udev w swoim ulubionym edytorze tekstu (np. nano, micro, vim)
                ```sh title='Przykład'
                sudo nano /etc/udev/rules.d/60-ioschedulers.rules
                ```
            2. Dodaj następujące reguły do pliku. Te reguły automatycznie stosują określony planista I/O w zależności od typu dysku (HDD, SSD lub NVMe).
                ```text
                # HDD
                ACTION=="add|change", KERNEL=="sd[a-z]*", ATTR{queue/rotational}=="1", \
                    ATTR{queue/scheduler}="bfq"

                # SSD
                ACTION=="add|change", KERNEL=="sd[a-z]*|mmcblk[0-9]*", ATTR{queue/rotational}=="0", \
                    ATTR{queue/scheduler}="adios"

                # NVMe SSD
                ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/rotational}=="0", \
                    ATTR{queue/scheduler}="adios"
                ```
              3.  Zapisz plik i zamknij edytor.
              4.  Przeładuj reguły `udev`, aby natychmiast zastosować zmiany bez ponownego uruchamiania.
                  ```sh
                  sudo udevadm control --reload-rules
                  sudo udevadm trigger
                  ```
        </Steps>
    </TabItem>
</Tabs>

FAQ:

- Jeśli poprawia responsywność, dlaczego nie jest włączony domyślnie?
  - ADIOS jest wciąż w fazie aktywnego rozwoju i ciągłych testów. Chociaż oferuje znaczące korzyści dla responsywności pulpitu, nie jest jeszcze uważany za wystarczająco stabilny, aby być domyślnym dla wszystkich obciążeń i typów sprzętu. W niektórych skrajnych przypadkach błędy mogą prowadzić do problemów, takich jak zawieszenie systemu. Z tego powodu jest to opcjonalna funkcja dla użytkowników, którzy chcą przetestować i skorzystać z jej najnowszych ulepszeń.

### NVIDIA Smooth Motion (serie RTX 40xx i 50xx)

:::note[Kompatybilność z grami.]
Gry działające na DX11, DX12 i Vulkan.

Zarówno DXVK, jak i VKD3D działają poprawnie.

**Obsługiwane są tylko aplikacje 64-bitowe. Smooth Motion nie będzie działać z aplikacjami 32-bitowymi (np. starymi grami DX11).**

:::

Bezpośredni cytat z dokumentacji NVIDIA:

*NVIDIA Smooth Motion to nowy, oparty na sterowniku model AI, który zapewnia płynniejszą rozgrywkę, wnioskując dodatkową klatkę między dwiema wyrenderowanymi klatkami. W grach bez DLSS Frame Generation, NVIDIA Smooth Motion to nowa opcja poprawy wrażeń na kartach graficznych GeForce RTX z serii 40 i nowszych.*

- Jak włączyć NVIDIA Smooth Motion dla gry:
  - Dodaj następującą zmienną środowiskową:
    ```text
    NVPRESENT_ENABLE_SMOOTH_MOTION=1
    ```

FAQ:

- Dlaczego używać Smooth Motion zamiast DLSS Frame Generation?
  - Gdy gra nie obsługuje DLSS Frame Generation, Smooth Motion służy jako alternatywa dzięki swojemu modelowi AI opartemu na sterowniku.
- Czy używanie Smooth Motion ma jakieś wady?
  - Tak, włączenie Smooth Motion może wprowadzić niewielkie opóźnienie wejścia z powodu dodatkowego procesu wnioskowania klatek.
  - Może powodować problemy z nakładkami firm trzecich. Aby tego uniknąć, dodaj następującą zmienną środowiskową:
    ```text
    NVPRESENT_QUEUE_FAMILY=1
    ```
    :::note[Podczas używania tej zmiennej można zaobserwować spadek wydajności.]
    :::
- Dlaczego MangoHud nie pokazuje zwiększonej liczby klatek na sekundę?
  - Obecnie MangoHud nie uwzględnia dodatkowych klatek generowanych przez Smooth Motion, co prowadzi do mylącego raportowania liczby klatek na sekundę.
    - Użycie wbudowanego licznika FPS w monitorze pokaże prawidłową liczbę klatek.
- Jaka jest jakość obrazu w porównaniu do DLSS Frame Generation?
  - Jakość obrazu nie jest tak dobra i może wprowadzać artefakty, zwłaszcza podczas szybkich scen akcji.
- Czy jest kompatybilny z zewnętrznymi narzędziami do ograniczania liczby klatek? Przykład: MangoHud.
  - Nie. Wbudowany w grze ogranicznik powinien działać poprawnie.
- Czy Smooth Motion można łączyć z DLSS Frame Generation?
  - Nie. Tylko jedna metoda generowania klatek może być aktywna w danym momencie.

## Modyfikacje oszczędzania energii

### Włącz RCU Lazy

RCU Lazy pomaga zmniejszyć zużycie energii w systemach bezczynnych lub lekko obciążonych. Może to być przydatne w przypadku laptopów i urządzeń przenośnych.
Poprawa w oszczędzaniu energii wynosi od 5 do 10%. Należy jednak pamiętać, że ta funkcja oszczędzania energii może wiązać się z nieznacznym obniżeniem wydajności, w zależności od scenariusza.
Jądro linux-cachyos-deckify będzie miało tę opcję domyślnie włączoną, ponieważ oszczędzanie energii jest kluczowe i niezbędne dla tych urządzeń.

Aby włączyć RCU Lazy, dodaj następujący parametr do listy parametrów [linii poleceń](/pl/configuration/boot_manager_configuration/) jądra:
```text
rcutree.enable_rcu_lazy=1
```

## Rozwiązywanie problemów z NVIDIA

### Wyłączanie backendu Wayland dla SDDM

:::note
Począwszy od wersji cachyos-kde-settings 4.3, SDDM domyślnie używa KWin jako kompozytora Wayland.
:::

Chociaż jest to miły krok naprzód, może to wprowadzić pewne niedogodności, takie jak problemy z podkręcaniem za pomocą nvidia-settings lub powodować niekompatybilność ze starszymi kartami graficznymi, które mają problemy z Waylandem.

Aby cofnąć tę zmianę, usuń pakiet cachyos-kde-settings:
```sh
sudo pacman -R cachyos-kde-settings
```

### Oprogramowanie układowe NVIDIA GSP

Oprogramowanie układowe NVIDIA GSP może **"w niektórych przypadkach"** prowadzić do obniżenia wydajności. Chociaż sterownik NVIDIA 555.58.02 w dużej mierze rozwiązał ten problem, może on nadal występować na niektórych systemach.
Jeśli napotykasz na zacięcia w KDE lub niską wydajność w niektórych przypadkach, możesz wyłączyć oprogramowanie układowe GSP za pomocą następującego pliku konfiguracyjnego:
`/etc/modprobe.d/nvidia-gsp.conf`

```text
options nvidia NVreg_EnableGpuFirmware=0
```

Po utworzeniu pliku, wykonaj następujące polecenie:
```sh
sudo mkinitcpio -P
```

:::note
[Otwarte moduły jądra](https://github.com/NVIDIA/open-gpu-kernel-modules) firmy NVIDIA są oparte na oprogramowaniu układowym GSP. Z tego powodu GSP nie może zostać wyłączone, a ta opcja modprobe zostanie zignorowana podczas ich używania. Użyj `linux-cachyos-nvidia` lub `nvidia-dkms`.
:::

Zasadniczo zaleca się testowanie oprogramowania układowego GSP po każdej nowej instalacji sterownika NVIDIA, ponieważ często wprowadza ono korzystne funkcje. Co więcej, NVIDIA zaczęła głównie przeprowadzać testy QA przy użyciu oprogramowania układowego GSP.

## Ulepszenia dźwięku i oprogramowania

### Poprawa dźwięku głośników w laptopie

Głośniki w laptopach często produkują płaski i mało imponujący dźwięk z powodu ich kompaktowych rozmiarów i ograniczonych możliwości sprzętowych. [EasyEffects](https://wiki.archlinux.org/title/PipeWire#EasyEffects) może znacząco poprawić jakość dźwięku wbudowanych głośników laptopa poprzez zastosowanie różnych efektów audio i niestandardowych konfiguracji.

Aby zacząć, musisz zainstalować EasyEffects i wymagane zależności:

```bash
# Zainstaluj EasyEffects
sudo pacman -S easyeffects
# Zainstaluj dodatkowe wtyczki dla większej liczby efektów
sudo pacman -S lsp-plugins-lv2
sudo pacman -S zam-plugins
sudo pacman -S calf
sudo pacman -S mda.lv2
```

#### Konfiguracja

Postępuj zgodnie z tymi krokami, aby skonfigurować EasyEffects:

1. Uruchom EasyEffects z menu aplikacji lub wpisując `easyeffects` w terminalu.
2. Przejdź do zakładki **Wyjście**, aby zarządzać efektami stosowanymi do dźwięku z głośników.
3. Przełącz się na zakładkę **Efekty**, aby dodawać, modyfikować lub dostosowywać efekty audio.

<ImageComponent imgsrc={import('~/assets/images/easyeffects.png')} />

##### Używanie presetów społeczności

Aby szybko i skutecznie skonfigurować, zacznij od **presetów stworzonych przez społeczność**, dostosowanych do różnych scenariuszy audio:

1. Pobierz presety z repozytorium [EasyEffects Community Presets](https://github.com/wwmm/easyeffects/wiki/Community-presets).
2. W EasyEffects kliknij przycisk **Presety** i wybierz **"Importuj preset z pamięci lokalnej"**.
3. Zlokalizuj i wybierz pobrany plik presetu.
4. Po zaimportowaniu preset pojawi się na Twojej liście — kliknij **"Wczytaj"**, aby zastosować go do wyjścia audio.

<ImageComponent imgsrc={import('~/assets/images/easyeffects-presets.png')} />

##### Tworzenie niestandardowego profilu

Aby uzyskać bardziej spersonalizowane wrażenia dźwiękowe, utwórz niestandardowy profil dostosowany do głośników Twojego laptopa:

1. Kliknij przycisk **"+"** w menu Presety, aby utworzyć nowy preset (np. nazwij go **"Głośniki laptopa"**).
2. Wybierz **"Wczytaj"**, aby aktywować nowy preset.
3. Dodaj i skonfiguruj efekty w zakładce **Wyjście** > **Efekty**, eksperymentując z opcjami takimi jak korektory, wzmacniacze basu czy poszerzacze stereo.

##### Używanie efektu Convolver (Laptopy z Dolby Atmos)

Efekt **Convolver** może radykalnie poprawić dźwięk, stosując odpowiedzi impulsowe, które symulują wysokiej jakości środowiska audio. Wymaga to jednak precyzyjnej konfiguracji:

1. Dodaj efekt **Convolver** do swojego łańcucha efektów w zakładce **Efekty**.
2. Wczytaj plik odpowiedzi impulsowej (w formacie `.wav`) specyficzny dla Twojego modelu laptopa, jeśli jest dostępny. Możesz szukać tych plików online w źródłach takich jak:
   - https://wiki.archlinux.org/title/Lenovo_ThinkPad_T14_(AMD)_Gen_4#Speakers
   - https://github.com/m4tx/thinkpad-p14s-g4-linux/#sound
   - https://github.com/shuhaowu/linux-thinkpad-speaker-improvements/
3. **Zapobiegaj przesterowaniu**: Efekt Convolver może znacznie zwiększyć głośność. Dodaj efekt **Limiter** po Convolverze w swoim łańcuchu efektów, aby kontrolować szczyty i uniknąć zniekształceń.

<ImageComponent imgsrc={import('~/assets/images/easyeffects-convolver.png')} />

#### Wskazówki dla optymalnych rezultatów

- **Eksperymentuj** z różnymi presetami, aby znaleźć najlepsze dopasowanie do Twojego konkretnego modelu laptopa i osobistych preferencji dźwiękowych.
- **Dokonuj stopniowych korekt** poszczególnych efektów, aby zapobiec zniekształceniom lub nienaturalnemu brzmieniu.
- **Porównuj, włączając i wyłączając**: Często włączaj i wyłączaj EasyEffects, aby ocenić poprawę w stosunku do domyślnego dźwięku.
- Szukaj **presetów specyficznych dla urządzenia lub odpowiedzi impulsowych Convolvera** dla popularnych modeli laptopów, takich jak **Framework Laptop 13** czy **ThinkPad T14**, aby osiągnąć dopasowane rezultaty.
- **Automatyzuj uruchamianie**: Skonfiguruj EasyEffects, aby uruchamiał się automatycznie przy starcie systemu poprzez preferencje aplikacji, aby zapewnić, że Twój niestandardowy profil jest zawsze stosowany.
- **Automatyczne wczytywanie presetów dla wielu urządzeń**: Użyj zakładki **PipeWire** > **Automatyczne Wczytywanie Presetów**, aby powiązać określone presety z różnymi urządzeniami wyjściowymi (np. Głośniki vs. Słuchawki) dla płynnego przełączania. <ImageComponent imgsrc={import('~/assets/images/easyeffects-autoloading.png')} />

#### Alternatywa dla EasyEffects

Jako alternatywę możesz wypróbować [JDSP4Linux](https://github.com/Audio4Linux/JDSP4Linux), który jest procesorem efektów audio dla klientów PipeWire i PulseAudio.

### OBS Studio

W naszym repozytorium udostępniamy niestandardowy pakiet obs-studio-browser, który jest zalecany zamiast standardowego pakietu `obs-studio`. Zawiera on łatki naprawiające niektóre typowe problemy, takie jak błędy cuda i problemy z wirtualną kamerą.

```sh title='Otwórz terminal i uruchom następujące polecenie'
sudo pacman -S obs-studio-browser
# Jeśli wcześniej miałeś zainstalowany pakiet obs-studio, pacman zapyta, czy
# chcesz go zastąpić, w takim przypadku wpisz "T".
```

## Konfiguracja przestrzeni wymiany

### Przełączanie z ZRam na Zswap

Domyślnie CachyOS używa ZRam do zarządzania przestrzenią wymiany. Jeśli jednak wolisz używać Zswap, możesz łatwo się przełączyć, wykonując następujące kroki:

:::note
Ten przewodnik zakłada, że masz domyślną konfigurację CachyOS z włączonym ZRam i podczas instalacji nie utworzono żadnej partycji ani pliku wymiany.
:::

<Steps>
    1. Wyłącz ZRam, dodając parametr jądra. [Edytuj konfigurację swojego bootloadera](/pl/configuration/boot_manager_configuration) i dodaj następującą linię:
        ```text
        systemd.zram=0
        ```
    2. Utwórz pusty plik nadpisujący, aby wyłączyć [regułę udev CachyOS](https://github.com/CachyOS/CachyOS-Settings/blob/master/usr/lib/udev/rules.d/30-zram.rules), która wyłącza Zswap:
        ```bash
        sudo touch /etc/udev/rules.d/30-zram.rules
        ```
    3. Włącz Zswap, dodając następujący parametr jądra:
        ```text
        zswap.enabled=1 zswap.shrinker_enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=30
        ```
    4. Utwórz plik wymiany (swap) dla Zswap.
        <details>
            <summary>Jeśli używasz Btrfs:</summary>
                <Steps>
                    1. Utwórz podwolumin Btrfs dla pliku wymiany:
                        ```bash
                        sudo btrfs subvolume create /swap
                        ```
                    2. Utwórz plik wymiany o pożądanym rozmiarze (np. 8GB), zmieniając parametr `--size`:
                        ```bash "--size"
                        sudo btrfs filesystem mkswapfile --size 4g --uuid clear /swap/swapfile
                        ```
                    3. Aktywuj plik wymiany:
                        ```bash
                        sudo swapon /swap/swapfile
                        ```
                    4. Dodaj plik wymiany do `/etc/fstab`, aby był on trwały po ponownym uruchomieniu systemu:
                        ```bash
                        sudo echo "/swap/swapfile none swap defaults 0 0" >> /etc/fstab
                        ```
                </Steps>
        </details>
        <details>
            <summary>Jeśli nie używasz Btrfs:</summary>
            <Steps>
                1. Utwórz plik wymiany o pożądanym rozmiarze (np. 8GB), zmieniając parametr `count=`:
                    ```bash "count=8"
                    sudo dd if=/dev/zero of=/swapfile bs=1G count=8
                    ```
                2. Ustaw odpowiednie uprawnienia dla pliku wymiany:
                    ```bash
                    sudo chmod 0600 /swapfile
                    ```
                3. Sformatuj plik wymiany:
                    ```bash
                    sudo mkswap /swapfile
                    ```
                4. Dodaj plik wymiany do `/etc/fstab`, aby był on trwały po ponownym uruchomieniu systemu:
                    ```bash
                    sudo echo "/swapfile none swap defaults 0 0" >> /etc/fstab
                    ```
                5. Aktywuj plik wymiany:
                    ```
                    sudo swapon /swapfile
                    ```
            </Steps>
        </details>
    5. Przebuduj swój initramfs, aby zastosować zmiany. Polecenie różni się w zależności od twojego bootloadera:
        <details>
            <summary>systemd-boot</summary>
            ```bash
            sudo sdboot-manage gen
            ```
        </details>
        <details>
            <summary>GRUB</summary>
            ```bash
            sudo grub-mkconfig -o /boot/grub/grub.cfg
            ```
        </details>
        <details>
            <summary>Limine</summary>
            ```bash
            sudo limine-mkinitcpio
            ```
        </details>
    6. Uruchom ponownie system, aby zastosować wszystkie zmiany.
</Steps>
