Defence-in-depth VM privileges: TDP_VMPRIV, sync dispatch for swap objects, ARC pageout throttle
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- c
- Ambito
- operating-systems
Direzione di ricerca
Start with the listed FreeBSD locations, include/os/freebsd/spl/sys/kmem.h:49 and module/os/freebsd/zfs/arc_os.c:124, then trace the curproc == pageproc sites in sys/vm and swap-object dispatch. The issue describes several coordinated kernel changes and depends on nextbsd/nextbsd-kernel#214; completion includes the stated acceptance criterion that a TDP_VMPRIV thread allocates at VM_ALLOC_SYSTEM and waits pageproc-style.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
The cheap parts of the memory-reserve route, taken as defence in depth only -- not as the correctness argument. The bypass design (K1, Z3) is what makes swap safe.
Why only the cheap parts
illumos built the full reserve design (NOMEMWAIT(), KM_PUSHPAGE, a ZFS-sized pageout_reserve, the ARC throttle) and still ships pageout_deadman, which panics after 90 s of stuck pageout. On FreeBSD it is weaker again:
KM_PUSHPAGEis#defined toM_WAITOK(include/os/freebsd/spl/sys/kmem.h:49)arc_memory_throttle()isreturn (0);(module/os/freebsd/zfs/arc_os.c:124)
Design
TDP_VMPRIVbit intd_pflagsplus avm_thread_privileged()inline (curproc == pageproc || (td->td_pflags & TDP_VMPRIV)) at the ~10 existingcurproc == pageprocsites (~300-500 LOC insys/vm)- synchronous dispatch for swap objects (no taskq hop)
- the
arc_memory_throttlepageout branch, as Linux and illumos have
Acceptance
- a thread marked
TDP_VMPRIVallocates atVM_ALLOC_SYSTEMand waits pageproc-style
K8 in epic nextbsd/nextbsd#468 (E14 VM, paging & filesystems). Depends on: nextbsd/nextbsd-kernel#214 (K1).
Draft: https://pkgdemon.github.io/nextbsd-e14-tickets.html#k8
- Lingua principale
- C
- Stelle
- 12
- Fork
- 3
- Merge medio
- 7h 1m
- PR unite (30g)
- 7
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di nextbsd/nextbsd-kernel
-
area:bluetooth bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
nextbsd/nextbsd-kernel#236 ·
I maintainer di solito rispondono entro 1 giorno
-
area:vm bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
nextbsd/nextbsd-kernel#226 ·
I maintainer di solito rispondono entro 1 giorno
-
area:network enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
nextbsd/nextbsd-kernel#53 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
nextbsd/nextbsd-kernel#254 ·
I maintainer di solito rispondono entro 1 giorno
-
linsysfs: create DRM sysfs nodes for platform-bus GPUs so Linux libdrm finds vc4/v3d on the Pi 5Apertaarea:linux area:rpi5 enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 47/100
nextbsd/nextbsd-kernel#248 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di nextbsd/nextbsd-kernel
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
dosemu2/dosemu2#3178 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
backlog bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
EchoTools/nevr-runtime#653 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
InfiniTimeOrg/InfiniTime#2492 ·
-
Build fails when `memset_s` is unavailable: `Undefined symbols for architecture ppc: "_memset_s"`Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
XML_GetCurrentByteIndex64() returns -1 instead of a meaningful offset when m_eventPtr is NULLAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno