XNUMX ãæã®éçºãçµãŠãLinus Torvalds æ°ã¯
æ°ããããŒãžã§ã³ã«ã¯ã15033 人ã®éçºè
ã«ãã 1961 件ã®ä¿®æ£ãå«ãŸããŠããŸãã
ããã ãµã€ãº - 39 MB (å€æŽã«ãã 11590 åã®ãã¡ã€ã«ã圱é¿ãåãã570560 è¡ã®ã³ãŒããè¿œå ãããŸãã)
297401 è¡ãåé€ãããŸãã)ã 41 ã§æ瀺ãããå
šäœã®çŽ 5.7%
å€æŽã¯ããã€ã¹ãã©ã€ããŒã«é¢é£ããŠãããå€æŽã®çŽ 16% ã¯
ããŒããŠã§ã¢ ã¢ãŒããã¯ãã£ã«åºæã®ã³ãŒãã®æŽæ°ã«å¯Ÿããæ
床ã13%
ãããã¯ãŒã¯ ã¹ã¿ãã¯ã«é¢é£ãã4% ããã¡ã€ã« ã·ã¹ãã ã«ã4% ãå
éšã«é¢é£
ã«ãŒãã«ãµãã·ã¹ãã ã
- ãã£ã¹ã¯ ãµãã·ã¹ãã ãI/Oãããã³ãã¡ã€ã« ã·ã¹ãã
- æ°ãã exFAT ãã©ã€ããŒã®å®è£
ãè¿œå ããŸããã
èšç«ããã Samsung ã Android ã¹ããŒããã©ã³åãã«éçºããçŸåšã®ãsdfatã(2.x) ã³ãŒã ããŒã¹ã«åºã¥ããŠããŸãã 以åã«ã«ãŒãã«ã«è¿œå ããããã©ã€ããŒã¯ãSamsung ã®åŸæ¥ã®ã³ãŒã (ããŒãžã§ã³ 1.2.9) ã«åºã¥ããŠãããããã©ãŒãã³ã¹ã§ã¯æ°ãããã©ã€ããŒãããçŽ 10% é ããŠããŸããã exFAT ãµããŒããã«ãŒãã«ã«è¿œå ã§ããããã«ãªã£ãã®ã¯ãMicrosoft 以éã§ããããšãæãåºããŠãã ãããПпÑблОкПвала ä»æ§ãå ¬éããexFAT ç¹èš±ã Linux äžã§ãã€ã€ãªãã£ããªãŒã§äœ¿çšã§ããããã«ããŸããã - Btrfs ã¯æ°ãã ioctl() ã³ãã³ã BTRFS_IOC_SNAP_DESTROY_V2 ãå®è£ ããŠãããèå¥åã«ãã£ãŠãµãã»ã¯ã·ã§ã³ãåé€ã§ããŸãã ã€ã³ã©ã€ã³ ãšã¯ã¹ãã³ãã®ã¯ããŒã³äœæãå®å šã«ãµããŒããããŠããŸãã åé åæäœã®ãã£ã³ã»ã«ãã€ã³ãã®æ°ãæ¡åŒµãããããã©ã³ã¹ãã£ã³ã»ã«ãã³ãã³ãå®è¡æã®é·æéã®åŸ ã¡æéãççž®ãããŸããã ãšã¯ã¹ãã³ããžã®ããã¯ãªã³ã¯ã®æ±ºå®ãé«éåãããŸãã (ããšãã°ããã¹ã ã¹ã¯ãªããã®å®è¡æéã XNUMX æéããæ°åã«ççž®ãããŸãã)ã ãã¡ã€ã« ãšã¯ã¹ãã³ããããªãŒã®å i ããŒãã«ã¢ã¿ããããæ©èœãè¿œå ãããŸããã ãµãããŒãã£ã·ã§ã³ãžã®æžã蟌ã¿æããã³ NOCOW ã®é€å€æã«äœ¿çšãããããã㯠ã¹ããŒã ãåèšèšãããŸããã ç¯å²ã«å¯Ÿãã fsync å®è¡ã®å¹çãåäžããŸããã
- XFS ã§ã¯ãã¢ã¯ãã£ã ããŒãã£ã·ã§ã³ã®ã¡ã¿ããŒã¿ ãã§ãã¯ãš fsck ã匷åãããŸããã btree æ§é ãåæ§ç¯ããããã®ã©ã€ãã©ãªãææ¡ãããŠãããå°æ¥çã«ã¯ xfs_repair ãåå å·¥ããããŒãã£ã·ã§ã³ãã¢ã³ããŠã³ãããã«ãªã«ããªã®å¯èœæ§ãå®è£ ããããã«äœ¿çšãããäºå®ã§ãã
- SMB3 ã¹ãã¬ãŒãžã«ã¹ã¯ãã ããŒãã£ã·ã§ã³ãé 眮ããããã®å®éšçãªãµããŒãã CIFS ã«è¿œå ãããŸããã SMB3.1.1 ä»æ§ã§å®çŸ©ãããŠãã POSIX æ¡åŒµæ©èœã readdir ã«å®è£ ããŸããã ãã£ãã·ã¥ = å³å¯ã¢ãŒããæå¹ã§ããããã³ã« ããŒãžã§ã³ 64 以éã䜿çšãããŠããå Žåã® 2.1 KB ããŒãžã®æžã蟌ã¿ããã©ãŒãã³ã¹ãåäžããŸããã
- FS EXT4 ã¯ãbmap ããã³ iopoll ãã iomap ã䜿çšããããã«ç§»è¡ãããŸããã
- F2FS ã¯ãzstd ã¢ã«ãŽãªãºã ã䜿çšããããŒã¿å§çž®ã®ãªãã·ã§ã³ã®ãµããŒããæäŸããŸãã ããã©ã«ãã§ã¯ãLZ4 ã¢ã«ãŽãªãºã ãå§çž®ã«äœ¿çšãããŸãã ãchattr -c commitãã³ãã³ãã®ãµããŒããè¿œå ãããŸããã å®è£ æé衚瀺ä»ã§ãã å§çž®ãããã¯ã®æ°ã«é¢ããæ å ±ãååŸããããã® ioctl F2FS_IOC_GET_COMPRESS_BLOCKS ãè¿œå ããŸããã statx ãä»ããå§çž®ããŒã¿åºåãè¿œå ããŸããã
- Ceph ãã¡ã€ã« ã·ã¹ãã ã«ã¯ããµãŒããŒããã®å¿çãåŸ ããã« (éåæã¢ãŒãã§åäœããŠ) ãã¡ã€ã«ã®äœæããã³åé€æäœ (ãªã³ã¯è§£é€) ãããŒã«ã«ã§å®è¡ããæ©èœãè¿œå ãããŸããã ããšãã°ããã®å€æŽã«ãããrsync ãŠãŒãã£ãªãã£ã®å®è¡æã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãã
- virtiofs ããããã¬ãã«ã®ãã¡ã€ã« ã·ã¹ãã ãšããŠäœ¿çšããæ©èœã OVERLAYFS ã«è¿œå ãããŸããã
-
æžãçŽããã VFS ã®ãã¹ ãã©ããŒãµã« ã³ãŒããã·ã³ããªã㯠ãªã³ã¯è§£æã³ãŒããåå å·¥ãããããŠã³ã ãã€ã³ã ãã©ããŒãµã«ãçµ±åãããŸããã - SCSI ãµãã·ã¹ãã å
ã§ç¹æš©ã®ãªããŠãŒã¶ãŒã«å¯ŸããŠ
èš±å¯ããã ZBCã³ãã³ãã®å®è¡ã - dm_writecache å
å®è£ ãããŸãã ãããã¯ã®æ倧åç¶æéãèšå®ãã max_age ãã©ã¡ãŒã¿ã«åºã¥ããŠãã£ãã·ã¥ã段éçã«ã¯ãªã¢ããæ©èœã - dm_integrity å
è¿œå ãã ãç Žæ£ãæäœã®ãµããŒãã - null_blk å
è¿œå ãã ãã¹ãäžã®é害ãã·ãã¥ã¬ãŒãããããã®ãšã©ãŒçœ®æã®ãµããŒãã -
è¿œå ãã ãããã¯ããã€ã¹ã®ãµã€ãºå€æŽã«é¢ããudevéç¥ãéä¿¡ããæ©èœã
- æ°ãã exFAT ãã©ã€ããŒã®å®è£
ãè¿œå ããŸããã
- ãããã¯ãŒã¯ãµãã·ã¹ãã
- ããããã£ã«ã¿ãŒä»å±
å€æŽ ã«ããããµããããããããã¯ãŒã¯ ããŒãããããã³ã«ãMAC ã¢ãã¬ã¹ã®çµã¿åããããã§ãã¯ããå¿ èŠããã倧èŠæš¡ãªäžèŽãªã¹ã (nftables ã»ãã) ã®åŠçãå€§å¹ ã«é«éåãããŸãã
æé©åå ¥åãããŸãã nft_set_pipapo (PIle PAcket POlicies) ã¢ãžã¥ãŒã«ã«çµã¿èŸŒã¿ãŸããããã«ãããIP ããããã¯ãŒã¯ ããŒãç¯å²ãªã©ã®ãã£ã«ã¿ãªã³ã° ã«ãŒã«ã§äœ¿çšãããä»»æã®ãã£ãŒã«ãç¶æ ç¯å²ãšãã±ããã®å 容ãç §åããåé¡ã解決ãããŸã (nft_set_rbtree ãš nft_set_hash ã¯ãééã®ç §åãšå€ã®çŽæ¥åæ ãæäœããŸã) ïŒã AMD Epyc 256 ããã»ããµãæèŒããã·ã¹ãã äžã§ 2 ããã AVX7402 åœä»€ã䜿çšããŠãã¯ãã«åããã pipapo ã®ããŒãžã§ã³ã¯ãããŒããšãããã³ã«ã®çµã¿åãããå«ã 420 ã¬ã³ãŒãã解æããéã« 30% ã®ããã©ãŒãã³ã¹åäžã瀺ããŸããã 1000 件ã®ã¬ã³ãŒãã解æããéã®ãµãããããšããŒãçªå·ã®çµã¿åãããæ¯èŒããå Žåã®å¢å çã¯ãIPv87 㧠4%ãIPv128 㧠6% ã§ããã -
è¿œå ãã bareudp ã¢ãžã¥ãŒã«ãMPLSãIPãNSH ãªã©ã®ããŸããŸãª L3 ãããã³ã«ã UDP ãã³ãã«ã«ã«ãã»ã«åã§ããŸãã - MPTCP (ãã«ããã¹ TCP) ã³ã³ããŒãã³ãã®çµ±åã¯ãç°ãªã IP ã¢ãã¬ã¹ã«é¢é£ä»ããããç°ãªããããã¯ãŒã¯ ã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠè€æ°ã®ã«ãŒãã«æ²¿ã£ãŠåæã«ãã±ãããé ä¿¡ãã TCP æ¥ç¶ã®åäœãçµç¹ããããã® TCP ãããã³ã«ã®æ¡åŒµæ©èœã§ãããçµ±åãç¶ããããŠããŸãã
-
è¿œå ãã 802.11 (Wi-Fi) ã§ã€ãŒãµããã ãã¬ãŒã ãã«ãã»ã«åããããã®ããŒããŠã§ã¢ ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ ã¡ã«ããºã ã®ãµããŒãã - ããã€ã¹ããããããã¯ãŒã¯åå空éããå¥ã®ãããã¯ãŒã¯åå空éã«ç§»åãããšãsysfs å ã®å¯Ÿå¿ãããã¡ã€ã«ã®ã¢ã¯ã»ã¹æš©ãšæææš©ã調æŽãããŸãã
- é root ãŠãŒã¶ãŒã SO_BINDTODEVICE ãã©ã°ã䜿çšã§ããæ©èœãè¿œå ãããŸããã
- ãããã® XNUMX çªç®ã®éšåãåãå ¥ããããethtool ããŒã«ãããã ioctl() ãã netlink ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããããã«å€æããŸãã æ°ããã€ã³ã¿ãŒãã§ã€ã¹ã«ãããæ¡åŒµæ©èœã®è¿œå ã容æã«ãªãããšã©ãŒåŠçãæ¹åãããç¶æ ãå€åãããšãã«éç¥ãéä¿¡ã§ããããã«ãªããã«ãŒãã«ãšãŠãŒã¶ãŒç©ºéã®éã®å¯Ÿè©±ãç°¡çŽ åãããåæããå¿ èŠãããååä»ããªã¹ãã®æ°ãæžããŸãã
- ç¹å¥ãªããŒããŠã§ã¢ ã¢ã¯ã»ã©ã¬ãŒã¿ã䜿çšããŠæ¥ç¶è¿œè·¡æäœãå®è¡ããæ©èœãè¿œå ãããŸããã
- ããããã£ã«ã¿ãŒå
è¿œå ãããŸãã éä¿¡ãã±ãã (åºå) ã®åé¡åãæ¥ç¶ããããã®ããã¯ãããã¯ã以åã«ååšããŠããåä¿¡ãã±ãã (å ¥å) çšã®ããã¯ãè£å®ããŸãã
- ããããã£ã«ã¿ãŒä»å±
- ä»®æ³åãšã»ãã¥ãªãã£
- ãã€ã³ã¿ãŒèªèšŒã®ããŒããŠã§ã¢å®è£
ãè¿œå ããŸãã (
ãã€ã³ã¿èªèšŒ ) ã¯ãç¹æ®ãª ARM64 CPU åœä»€ã䜿çšããŠããªã¿ãŒã³æåããã°ã©ãã³ã° (ROP) æè¡ã䜿çšããæ»æããä¿è·ããŸãããã®æè¡ã§ã¯ãæ»æè ã¯ã³ãŒããã¡ã¢ãªã«é 眮ããããšãããèªã¿èŸŒãŸããã©ã€ãã©ãªã§ãã§ã«å©çšå¯èœãªæ©æ¢°èªåœä»€ã®äžéšãæäœããŸããå¶åŸ¡åŸ©åž°åœä»€ä»ãã ã»ãã¥ãªãã£ãšã¯ãçµå±ã®ãšãããããžã¿ã«çœ²åã䜿çšããŠãªã¿ãŒã³ ã¢ãã¬ã¹ãã«ãŒãã« ã¬ãã«ã§æ€èšŒããããšã§ãã 眲åã¯ããã€ã³ã¿ãŒèªäœã®æªäœ¿çšã®äžäœãããã«ä¿ç®¡ãããŸãã ãœãããŠã§ã¢å®è£ ãšã¯ç°ãªããããžã¿ã«çœ²åã®äœæãšæ€èšŒã¯ç¹å¥ãª CPU åœä»€ã䜿çšããŠå®è¡ãããŸãã -
è¿œå ãã userfaultfd() ã·ã¹ãã ã³ãŒã«ã䜿çšããŠã¡ã¢ãªé åãæžã蟌ã¿ããä¿è·ããæ©èœããŠãŒã¶ãŒç©ºéã§ã®ããŒãž ãã©ãŒã«ã (æªå²ãåœãŠã¡ã¢ãª ããŒãžãžã®ã¢ã¯ã»ã¹) ãåŠçããããã«èšèšãããŠããŸãã ãã®ã¢ã€ãã¢ã¯ã userfaultfd() ã䜿çšããŠãæžã蟌ã¿ä¿è·ãšããŠããŒã¯ãããããŒãžãžã®ã¢ã¯ã»ã¹éåãæ€åºãããã®ãããªæžã蟌ã¿è©Šè¡ã«å¿çã§ãããã³ãã©ãŒãåŒã³åºãããšã§ã (ããšãã°ãå®è¡äžã®ããã»ã¹ã®ã©ã€ã ã¹ãããã·ã§ããã®äœæäžã®å€æŽãåŠçãããããç¶æ ãã£ã¹ã¯ãžã®ã¡ã¢ãª ãã³ãã®ãã³ãæãå ±æã¡ã¢ãªã®å®è£ æãã¡ã¢ãªå ã®å€æŽã®è¿œè·¡æã®ãã£ããã£)ã æ©èœæ§åç mprotect() ã SIGSEGV ã·ã°ãã« ãã³ãã©ãŒãšçµã¿åãããŠäœ¿çšââããŸãããåäœãèããé«éã«ãªããŸãã - SELinux ã§ã¯ããcheckreqprotããã©ã¡ãŒã¿ãéæšå¥šã«ãªããŸãããããã«ãããã«ãŒã«ã®åŠçæã«ã¡ã¢ãªä¿è·ãã§ãã¯ãç¡å¹ã«ããããšãã§ããŸã (ã«ãŒã«ã§æå®ãããŠããã«ãŒã«ã«é¢ä¿ãªããå®è¡å¯èœã¡ã¢ãªé åã®äœ¿çšãèš±å¯ãããŸã)ã Kernfs ã·ã³ããªãã¯ãªã³ã¯ã¯ã芪ãã£ã¬ã¯ããªã®ã³ã³ããã¹ããç¶æ¿ããããšãã§ããŸãã
- æ§é
å«ãŸããŠããŸã ã¢ãžã¥ãŒã«KRSI ããã«ãããã«ãŒãã«å ã®ä»»æã® LSM ããã¯ã« BPF ããã°ã©ã ãæ¥ç¶ã§ããããã«ãªããŸãã ãã®å€æŽã«ãããç£æ»ã®åé¡ãå¿ é ã®ã¢ã¯ã»ã¹å¶åŸ¡ã解決ããããã«ãBPF ããã°ã©ã ã®åœ¢åŒã§ LSM ã¢ãžã¥ãŒã« (Linux ã»ãã¥ãªã㣠ã¢ãžã¥ãŒã«) ãäœæã§ããããã«ãªããŸãã -
å®æœãã RNG åœä»€ãåå¥ã«åŒã³åºãã®ã§ã¯ãªããCRNG å€ããããåŠçããããšã§ /dev/random ã®ããã©ãŒãã³ã¹ãæé©åããŸãã RNG åœä»€ãæäŸãã ARM64 ã·ã¹ãã äžã® getrandom ããã³ /dev/random ã®ããã©ãŒãã³ã¹ãåäžããŸããã - æ¥åæ²ç·ã®å®è£
Curve25519
亀æããã ã©ã€ãã©ãªããã®ãªãã·ã§ã³ã®å ŽåHACL ããã®ããã«äžãããã 圢åŒçãªä¿¡é Œæ§æ€èšŒã®æ°åŠç蚌æã -
è¿œå ãã 空ãã¡ã¢ãª ããŒãžã«ã€ããŠéç¥ããã¡ã«ããºã ã ãã®ã¡ã«ããºã ã䜿çšãããšãã²ã¹ã ã·ã¹ãã ã¯ã䜿çšãããªããªã£ãããŒãžã«é¢ããæ å ±ããã¹ã ã·ã¹ãã ã«éä¿¡ãããã¹ãã¯ããŒãž ããŒã¿ãåãæ»ãããšãã§ããŸãã - vfio/pci ã§
è¿œå ãã SR-IOV (ã·ã³ã°ã«ã«ãŒã I/O ä»®æ³å) ã®ãµããŒãã
- ãã€ã³ã¿ãŒèªèšŒã®ããŒããŠã§ã¢å®è£
ãè¿œå ããŸãã (
- ã¡ã¢ãªããã³ã·ã¹ãã ãµãŒãã¹
- 80æåãã100æåãŸã§
å¢å ãœãŒã¹ããã¹ãã®æ倧è¡é·ã®å¶éã åæã«ãéçºè 㯠80 è¡ããã XNUMX æå以å ã«ããããšãäŸç¶ãšããŠæšå¥šãããŠããŸãããããã¯å³å¯ãªå¶éã§ã¯ãªããªããŸããã ããã«ãè¡ãµã€ãºå¶éãè¶ ãããšãã--strictããªãã·ã§ã³ã䜿çšã㊠checkpatch ãå®è¡ããå Žåã«ã®ã¿ããã«ãèŠåãçºçããããã«ãªããŸããã ãã®å€æŽã«ãããéçºè ã®æ³šæãããããªãããã«ããããšãå¯èœã«ãªããŸããæäœ ã¹ããŒã¹ã䜿çšãããšãã³ãŒããããèªç±ã«é 眮ã§ããããã«ãªããŸããé²ããŸã é床ã®æ¹è¡ãäžå®ãª ã³ãŒãã®ç解ãšæ€çŽ¢ã -
è¿œå ãã EFI æ··åããŒã ã¢ãŒãã®ãµããŒããããã«ãããå°çšã®ããŒãããŒããŒã䜿çšããã«ã64 ããã CPU ã§å®è¡ãããŠãã 32 ããã ãã¡ãŒã ãŠã§ã¢ãã 64 ããã ã«ãŒãã«ãããŒãã§ããŸãã -
æå¹ ã¹ããªãã ããã¯ãèå¥ããã³ãããã°ããããã®ã·ã¹ãã (ãã¹ããªãããã㯠ããã¯ãã¢ãããã¯åœä»€ã®å®è¡æã«ããŒã¿ã 1000 ã€ã® CPU ãã£ãã·ã¥ ã©ã€ã³ããŸãããããã¡ã¢ãªå ã®ã¢ã©ã€ã¡ã³ããããŠããªãããŒã¿ã«ã¢ã¯ã»ã¹ãããšãã«çºçããŸãã ãã®ãããªããããã³ã°ã¯ãããã©ãŒãã³ã¹ã«é倧ãªåœ±é¿ãåãŒããŸã (XNUMX ã€ã®ãã£ãã·ã¥ ã©ã€ã³ã«åé¡ãããããŒã¿ã«å¯Ÿããã¢ãããã¯æäœããã XNUMX ãµã€ã¯ã«é ããªããŸã)ã ãsplit_lock_detectãããŒã ãã©ã¡ãŒã¿ã«å¿ããŠãã«ãŒãã«ã¯ãã®ãããªããã¯ããªã³ã¶ãã©ã€ã§æ€åºããèŠåãçºããããããã¯ã®åå ãšãªã£ãŠããã¢ããªã±ãŒã·ã§ã³ã« SIGBUS ã·ã°ãã«ãéä¿¡ãããã§ããŸãã - ã¿ã¹ã¯ ã¹ã±ãžã¥ãŒã©ã¯ã枩床ã»ã³ãµãŒ (
ç±å§å ïŒãã¿ã¹ã¯é 眮æã®éç±ãèæ ®ããŠå®è£ ãããŸããã æäŸãããçµ±èšã䜿çšããŠããµãŒãã« ã¬ããã¯éç±æã®æ倧 CPU åšæ³¢æ°ã調æŽã§ããã¿ã¹ã¯ ã¹ã±ãžã¥ãŒã©ã¯ãã¿ã¹ã¯ã®å®è¡ãã¹ã±ãžã¥ãŒã«ãããšãã«ãåšæ³¢æ°ã®äœäžã«ããèšç®èœåã®äœäžãèæ ®ããããã«ãªããŸãã (以åã¯ãã¹ã±ãžã¥ãŒã©ã¯å€æŽã«å¿çããŠããŸãã)ãäžå®ã®é 延ã䌎ãé »åºŠã§ããã°ããã®éãå©çšå¯èœãªã³ã³ãã¥ãŒãã£ã³ã° ãªãœãŒã¹ã«é¢ããèªåŒµãããä»®å®ã«åºã¥ããŠæ±ºå®ãäžããŸã)ã - ã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ã«ã¯ä»¥äžãå«ãŸããŸã
äžå€ææš è² è·è¿œè·¡ã«ãããçŸåšã® CPU åäœåšæ³¢æ°ã«é¢ä¿ãªããè² è·ãæ£ç¢ºã«èŠç©ããããšãã§ããŸãã ãã®å€æŽã«ãããé»å§ãš CPU åšæ³¢æ°ãåçã«å€åããæ¡ä»¶äžã§ã®ã¿ã¹ã¯ã®åäœãããæ£ç¢ºã«äºæž¬ã§ããããã«ãªããŸãã ããšãã°ã1 MHz 㧠CPU ãªãœãŒã¹ã® 3/1000 ãæ¶è²»ããã¿ã¹ã¯ã¯ãåšæ³¢æ°ã 2 MHz ã«äœäžãããšãªãœãŒã¹ã® 3/500 ãæ¶è²»ããŸããããã«ããã以åã¯ã¿ã¹ã¯ããã«ãã£ãã·ãã£ã§å®è¡ãããŠãããšãã誀ã£ãä»®å®ãçããŠããŸãã (ã€ãŸããã¿ã¹ã¯ã衚瀺ãããŸã)ãåšæ³¢æ°ãæžããããšã«ãã£ãŠã®ã¿ã¹ã±ãžã¥ãŒã©ãŒã«å€§ãã圱é¿ãããããschedutil cpufreq ã¬ãããŒã§èª€ã£ã決å®ãè¡ãããããšã«ãªããŸã)ã - ããã©ãŒãã³ã¹ ã¢ãŒãã®éžæãæ
åœããã€ã³ãã« P ã¹ããŒã ãã©ã€ããŒãã䜿çšããããã«åãæ¿ããããŸããã
scheduleutil . - ã«ãŒãã«ããªã¢ã«ã¿ã€ã ã§å®è¡ãããŠãããšãã« BPF ãµãã·ã¹ãã ã䜿çšããæ©èœ (PREEMPT_RT) ãå®è£ ãããŸããã 以åã¯ãPREEMPT_RT ãæå¹ã«ãªã£ãŠããå Žåã¯ãBPF ãç¡å¹ã«ããå¿ èŠããããŸããã
- æ°ããã¿ã€ãã® BPF ããã°ã©ã ãBPF_MODIFY_RETURN ãè¿œå ãããŸãããããã¯ãã«ãŒãã«å ã®é¢æ°ã«ã¢ã¿ããããŠããã®é¢æ°ã«ãã£ãŠè¿ãããå€ãå€æŽã§ããŸãã
- è¿œå ãã
æ©äŒ clone3() ã·ã¹ãã ã³ãŒã«ã䜿çšããŠã芪 cgroup ãšã¯ç°ãªã cgroup å ã«ããã»ã¹ãäœæããŸããããã«ããã芪ããã»ã¹ã¯ãæ°ããããã»ã¹ãŸãã¯ã¹ã¬ãããçæããçŽåŸã«å¶éãé©çšããã¢ã«ãŠã³ãã£ã³ã°ãæå¹ã«ããããšãã§ããŸãã ããšãã°ããµãŒãã¹ ãããŒãžã£ãŒã¯æ°ãããµãŒãã¹ãåå¥ã® cgroup ã«çŽæ¥å²ãåœãŠãããšãã§ããæ°ããããã»ã¹ããåçµãããã cgroup ã«é 眮ããããšãããã«åæ¢ãããŸãã - ã¯ãã«ãã§
è¿œå ãã ã«ãŒãã«ã®æ§ç¯æã« Clang/LLVM ããŒã«ãããã«åãæ¿ããããã®ç°å¢å€æ°ãLLVM=1ãã®ãµããŒãã binutils ããŒãžã§ã³ã®èŠä»¶ãåŒãäžããããŸãã (2.23)ã - kunit ãã¹ãã®çµæãå«ãã»ã¯ã·ã§ã³ /sys/kernel/debug/kunit/ ã debugfs ã«è¿œå ãããŸããã
- ã«ãŒãã« ããŒã ãã©ã¡ãŒã¿ pm_debug_messages (/sys/power/pm_debug_messages ã«é¡äŒŒ) ãè¿œå ããŸãããããã«ãããé»æºç®¡çã·ã¹ãã ã®åäœã«é¢ãããããã°æ å ±ã®åºåãæå¹ã«ãªããŸã (äŒæ¢ç¶æ ããã³ã¹ã¿ã³ã〠ã¢ãŒãã«é¢ããåé¡ããããã°ããå Žåã«åœ¹ç«ã¡ãŸã)ã
- éåæI/Oã€ã³ã¿ãŒãã§ãŒã¹ãž
io_uring ãµããŒããè¿œå ãããŸããã¹ãã©ã€ã¹ïŒïŒ Оã¢ãããã¯ãããã¡ã®éžæ . - perf ããŒã«ãããã䜿çšãã cgroup ãããã¡ã€ãªã³ã°ãæ¹åãããŸããã 以åã¯ãperf ã¯ç¹å®ã® cgroup å
ã®ã¿ã¹ã¯ã®ã¿ããããã¡ã€ãªã³ã°ã§ããçŸåšã®ãµã³ãã«ãã©ã® cgroup ã«å±ããŠããããèŠã€ããããšãã§ããŸããã§ããã perf ã¯åãµã³ãã«ã® cgroup æ
å ±ãåãåãããã«ãªããè€æ°ã® cgroup ããããã¡ã€ãªã³ã°ãã䞊ã¹æ¿ããé©çšã§ããããã«ãªããŸããã
ã¬ããŒãå ã® cgroupã - cgroups ã管çããããã®æ¬äŒŒ FS ã§ãã cgroupfs ã«ã¯ãæ¡åŒµå±æ§ (xattrs) ã®ãµããŒããè¿œå ãããŸãããããã«ãããããšãã°ããã³ãã©ãŒã®è¿œå æ å ±ããŠãŒã¶ãŒç©ºéã«æ®ãããšãã§ããŸãã
- cgroupã¡ã¢ãªã³ã³ãããŒã©å
è¿œå ãããŸãã ã°ã«ãŒã ã¡ã³ããŒã«æäŸããã RAM ã®æå°éãèŠå¶ãããmemory.lowãå€ã®ååž°çä¿è·ã®ãµããŒãã ãmemory_recursiveprotããªãã·ã§ã³ã䜿çšããŠcgroupéå±€ãããŠã³ããããšãäžäœããŒãã«èšå®ããããmemory.lowãã®å€ããã¹ãŠã®åããŒãã«èªåçã«é åžãããŸãã -
è¿œå ãã CPU ãšåšèŸºããã€ã¹éã§ä»®æ³ã¢ãã¬ã¹ (SVAãå ±æä»®æ³ã¢ãã¬ã¹æå®) ãå ±æããããã® Uacce (çµ±å/ãŠãŒã¶ãŒç©ºéã¢ã¯ã»ã¹åãã¢ã¯ã»ã©ã¬ãŒã¿ãŒ ãã¬ãŒã ã¯ãŒã¯) ãã¬ãŒã ã¯ãŒã¯ãããã«ãããããŒããŠã§ã¢ ã¢ã¯ã»ã©ã¬ãŒã¿ãã¡ã€ã³ CPU ã®ããŒã¿æ§é ã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã
- 80æåãã100æåãŸã§
- ããŒããŠã§ã¢ã¢ãŒããã¯ãã£
- ARM ã¢ãŒããã¯ãã£ã®å Žåãã¡ã¢ãªãããããã§ããããæ©èœãå®è£ ãããŠããŸãã
- RISC-V ã¢ãŒããã¯ãã£ã®å ŽåãCPU ã®ããããã©ã°ãšåãå€ã (CPU ããããã©ã°) ã®ãµããŒããè¿œå ãããŸããã 32 ããã RISC-V ã®å ŽåãeBPF JIT ãå®è£ ãããŸãã
- 32 ããã ARM ã·ã¹ãã ã䜿çšã㊠KVM ã²ã¹ãç°å¢ãå®è¡ããæ©èœã¯åé€ãããŸããã
- s390 ã¢ãŒããã¯ãã£ã®ããããŒãNUMA å®è£ ãåé€ããŸãããããã©ãŒãã³ã¹ã®åäžãå®çŸãããŠãŒã¹ã±ãŒã¹ãèŠã€ãããŸããã§ããã
- ARM64 ã®å ŽåãARMv8.4 ã§å®çŸ©ãããã¿ã¹ã¯ ã¹ã±ãžã¥ãŒã©ã§åšæ³¢æ°ã¹ã±ãŒãªã³ã°è£æ£ä¿æ°ãèšç®ããããã«äœ¿çšãããããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒãæäŸãã AMU (ã¢ã¯ãã£ãã㣠ã¢ãã¿ãŒ ãŠããã) æ¡åŒµæ©èœã®ãµããŒããè¿œå ãããŸããã
- æ©åš
-
è¿œå ãã virtio ä»æ§ã«æºæ ããããŒã¿äº€æãã£ãã«ã䜿çšãã vDPA ããã€ã¹ã®ãµããŒãã vDPA ããã€ã¹ã¯ãç©ççã«æ¥ç¶ãããæ©åšãŸãã¯ãœãããŠã§ã¢ã§ãšãã¥ã¬ãŒããããä»®æ³ããã€ã¹ã®ããããã«ãªããŸãã - GPIO ãµãã·ã¹ãã å
åºçŸãã å€æŽãç£èŠããããã®æ°ãã ioctl() ã³ãã³ãã«ãããGPIO ã©ã€ã³ã®ç¶æ ã®å€æŽãããã»ã¹ã«éç¥ã§ããããã«ãªããŸãã æ°ããã³ãã³ãã®äœ¿çšäŸãšããŠã¯ææ¡ gpio-watch ãŠãŒãã£ãªãã£ã - Intel ãã㪠ã«ãŒãçšã® i915 DRM ãã©ã€ããŒå
å«ãŸããŠããŸã Tigerlake (ãGen12ã) ãããã®ããã©ã«ãã®ãµããŒããšãOLED ããã¯ã©ã€ãå¶åŸ¡ã®åæãµããŒããè¿œå ãããŸããã Ice LakeãElkhart LakeãBaytrailãããã³ Haswell ãããã®ãµããŒããåäžããŸããã - amdgpuãã©ã€ããŒå
è¿œå ãã ASIC çšã® USBC ãããã«ãã¡ãŒã ãŠã§ã¢ãããŒãããæ©èœã AMD Ryzen 4000ãRenoirããããã®ãµããŒããåäžããŸããã OLED ããã«ã®å¶åŸ¡ããµããŒããããããã«ãªããŸããã debugfs ã§ã®ãã¡ãŒã ãŠã§ã¢ã®ã¹ããŒã¿ã¹ã®è¡šç€ºãæäŸããŸããã - ã²ã¹ã ã·ã¹ãã 㧠OpenGL 4 ã䜿çšããæ©èœããVMware ä»®æ³åã·ã¹ãã çšã® vmwgfx DRM ãã©ã€ããŒã«è¿œå ãããŸãã (以å㯠OpenGL 3.3 ããµããŒããããŠããŸãã)ã
- TI Keystone ãã©ãããã©ãŒã ãã£ã¹ãã¬ã€ ã·ã¹ãã çšã®æ°ãã DRM ãã©ã€ã㌠tidss ãè¿œå ããŸããã
- LCD ããã«çšã®ãã©ã€ããŒãè¿œå ããŸãã: Feixin K101 IM2BA02ãSamsung s6e88a0-ams452ef01ãNovatek NT35510ãElida KD35T133ãEDTãNewEast Optoelectronics WJFH116008AãRocktech RK101II01D-CTãFrida FRD350H54004ã
- é»æºç®¡çã·ã¹ãã ãž
è¿œå ãã Atom ããŒã¹ã® Intel Jasper Lake (JSL) ãã©ãããã©ãŒã ã®ãµããŒãã - Rockchip RK3399 ããŒã¹ã® Pinebook Pro ã©ããããããPine64 PineTab ã¿ãã¬ããããã³ã¹ããŒããã©ã³ã®ãµããŒããè¿œå ããŸãã
ãã€ã³ãã©ã³ Allwinner A64ããŒã¹ã - æ°ãããªãŒãã£ãª ã³ãŒããã¯ãšãããã®ãµããŒããè¿œå ãããŸããã
Amlogic AIUãAmlogic T9015ãTexas Instruments TLV320ADCX140ãRealtek RT5682ãALC245ãBroadcom BCM63XX I2SãMaxim MAX98360AãPresonus Studio 1810cãMOTU MicroBook IIcã - ARM ããŒããšãã©ãããã©ãŒã ã®ãµããŒããè¿œå Qualcomm Snapdragon 865 (SM8250)ãIPQ6018ãNXP i.MX8M PlusãKontron "sl28"ã11 i.MX6 TechNexion Pico ããŒã ãªãã·ã§ã³ã7710 ã€ã®æ°ãã Toradex Colibri ãªãã·ã§ã³ãST ããŒã¹ã® Samsung S2 Galaxy Xcover 8500 -Ericsson u2ãDH Electronics DHCOM SoM ããã³ PDK3ãRenesas M2ULCBãHoperun HiHopeãLinutronix Testbox v3ãPocketBook Touch Lux XNUMXã
-
åºæïŒ ãªãŒãã³ããã.ru