ã«ã¼ãã«ãgdbã§ãªã¢ã¼ããããã°ã§ããããã«ãããã¼ã¨ãæã£ã¦ãã£ã¦ãããã§ãã ããããä¸è¨ã®ãããªæãã§ã¡ãã£ã¨ããã£ã¦ã¾ããã ãã¬ã¼ã¯ãã¤ã³ããå¹ããªãã£ãã vmlinuxã¨vmlinuzã®çµãåã£ã¦ãã®ã«ã·ã³ãã«åãåºãªãã£ãã Cannot access memory at address 0xffffffff8124d730ã¨ãã§è½ã¡ãã åå ã¯KASLRãæå¹ã ã£ããããå®è¡æã«ã¢ãã¬ã¹ãã©ã³ããã¤ãºããã¦ããã®ãåå ã§ããï¼¼(^o^)ï¼ è§£æ±ºçã¯KASLRãoffã«ããã°è¯ãã ãã§ãããã®ããã«ã«ã¼ãã«ã®åãã«ãã¯ä¸è¦ã§ãã«ã¼ãã«ã®ã³ãã³ãã©ã¤ã³ã§nokaslrãæ¸¡ãã°OKã§ãã ããããã°ãã®ããã«ããæã㫠以ä¸ã¯ãã remoteæ¥ç¶ã«ã·ãªã¢ã«ã³ã³ã½ã¼ã«ã使ãå ´å qemuã¯ãããªæãã«ãªãã $ qemu-system-x86_64 -kernel vmlin
0. ã¯ããã« æ¬è¨äºã¯ãLinuxã対象ã¨ããã«ã¼ãã«ã¨ã¯ã¹ããã¤ãã®å ¥éè¨äºã§ãã ã«ã¼ãã«ã¨ã¯ã¹ããã¤ãã¨ããã®ã¯ãLinuxã*BSDãWindowsãå§ãã¨ããã«ã¼ãã«èªèº«ã®èå¼±æ§ãçªãã¨ã¯ã¹ããã¤ãã§ãã åºæ¬çã«ã«ã¼ãã«ã¯ã·ã¹ãã å ã§æé«æ¨©éãæã¤ç¹æ¨©ã¢ã¼ãã§åä½ãã¦ããã®ã§ããããæªç¨ãããã¨ã·ã¹ãã ã®å¤§é¨å(ã»ã¼å ¨ã¦)ãææ¡ããã¦ãã¾ãã¾ãã ã¨ã¯ã¹ããã¤ãã¨è¨ãã¨ãæ®éã¯ã¦ã¼ã¶ã¼ç©ºéã§åä½ãã¦ããã¢ããªã±ã¼ã·ã§ã³ã®ãã°ãã¤ãç©ãå¤ãã§ãããããã ã¨éãããã¬ãã«ã®æ¨©éãã奪ãã¾ããã SELinuxãjailãå§ãã¨ãããOSã¬ãã«ã§ã®ä¿è·æ©æ§ã«é»ã¾ããã¨ãã¡ã¾ã¡å¹åã失ã£ãããã¾ãã ããããã«ã¼ãã«èªä½ã®èå¼±æ§ãã¤ãã«ã¼ãã«ã¨ã¯ã¹ããã¤ããå©ç¨ããã¨æé«æ¨©éã§ã®ä»»æã³ã¼ãå®è¡ãå¯è½ãªããã大æµã®ä¿è·æ©æ§ã¯ãã®ã¨ããã¾ããã ãã®ã«ã¼ãã«ã¨ã¯ã¹ããã¤ããç¹ã«å¹åãçºæ®
å®è¡ä¸ã®ã·ã¹ãã ã®æåã詳細ã«ãã¬ã¼ã¹ããä»çµã¿ã¯ãç¹ã«ãããããããªãåé¡ãã«ééãã¦ããæã«éè¦ã§ããä»åã¯Linuxåãã®ãã¬ã¼ã·ã³ã°ãã¼ã«ã®æ¬å½ã¨ãè¨ããeBPFãå©ç¨ããå種ãã¼ã«ãç´¹ä»ãã¾ãã eBPFã«é¢ããè¨äºãä»å以éãæ°åã«ããã£ã¦è§£èª¬ããã¦ãã¾ãããããã¦ã覧ãã ããã 第688åãeBPFã®ã³ã³ãã¤ã©ã¼ã«å¯¾å¿ãããã¼ã«ã§ãã¾ãã¾ãªæåãå¯è¦åããï¼ä»åã®è¨äºï¼ 第690åãBCCã§eBPFã®ã³ã¼ããæ¸ãã¦ã¿ã 第692åãsysfsãbpftoolãç¨ããeBPFã®æ´»ç¨ 第694åãlibbpfã¨clangã§ãã¼ã¿ãã«ãªBPF CO-REãã¤ããªä½æ 第695åãå ¥éBPF CO-RE eBPFã¨BPF Compiler Collection æ¹ãã¦è¨ãã¾ã§ããªããLinuxã«ã¼ãã«ãããã¯ã«ã¼ãã«ä¸ã§åãã¦ããå種ã¿ã¹ã¯ã®ããã©ã¼ãã³ã¹ãæåã調ã¹ãªãã¦ã¯ãªããªã
第673åã®ãã«ã¼ãã«ã®ã¯ã©ãã·ã¥æ å ±ãåå¾ãããã§ã¯ãã«ã¼ãã«ã¯ã©ãã·ã¥æã«æ å ±ãåéããä»çµã¿ãæå¹åãã¾ãããå¾ãããæ å ±ã¯æ´»ç¨ããªãã¨æå³ãããã¾ãããä»åã¯ãã®ä¸èº«ãè§£æããæ¹æ³ãç´¹ä»ãã¾ãã ãããã°ããã±ã¼ã¸ã®ã¤ã³ã¹ãã¼ã« 第673åã§ã¯ãæå³çã«ã·ã¹ãã ãã¯ã©ãã·ã¥ããããã¨ã§ãdmesgã¨vmcoreãåå¾ãã¾ãããã«ã¼ãã«ãä»éã®éã«æ¬¡ã«ã¤ãªããæ å ±ãæ®ãã¦ãããã®ã§ãããâ ããããªãããã®ã¯ã©ãã·ã¥ãæå¾ã®panicã ã¨ã¯æããªãããããåãã«ã¼ãã«ãç¶ãã¦ä½¿ãããã¨ãããããã®panicã®åé¡ããã¾ãä¸çã®ã©ããã¸ç¾ãã¦ãããããããªãâ¦â¦ã æåã«è¡ãã¹ããªã®ã¯ãååç´¹ä»ããããã«åé¡çºçæã®dmesgãèªããã¨ã§ããããã§ããç¨åº¦ãç¶æ³ã®çµãè¾¼ã¿ã¯è¡ãã¾ãããéãè¯ããã°åå ãããããã¨ãããã¾ããããããªãããdmesgã ãã ã¨ãåé¡ãèµ·ããå ´æãã¯ããã£ã¦ã
QEMUã«ã¯gdbserver1ãå èµããã¦ããããã¹ãã®gdbããtcpè¶ãã«ã²ã¹ãOSã®ã«ã¼ãã«ããããã°ãããã¨ãã§ãã¾ãããã®è¨äºã¯ä¸ã®GIFåç»ã®ããã«NetBSD kernelã®ãããã°ãè¡ãHowtoã§ãã ï¼VMWareã§ãåããã¨ãã§ãããããã§ããWindowsãªãVirtualBox+VBoxGDBã§ãã§ãããããã§ããããç§ã¯æ¥å¸¸çã«NetBSDä»®æ³ãã·ã³ã使ã£ã¦ãã訳ã§ã¯ç¡ãã®ã§ãæ°è»½ã«ç°å¢æ§ç¯ã»æ¤å»ãã§ããQEMUã好ãã§ããlibvertã§ãã§ãããããã®ã§ãã®ãã¡ãã£ã¦ã¿ããã¨æã£ã¦ã¾ããï¼ æ³¨æäºé ãã¹ãOSã¯Linux (Ubuntu 18.04), macOS (Mojave 10.14.3) ã§æ¤è¨¼æ¸ã¿ã§ããWindowsãä»ã®OSã§ã®åä½å ±åãå¾ ã¡ãã¦ããã¾ãï¼ ã²ã¹ãOS㯠NetBSD - 8.0-amd64 ã§æ¤è¨¼æ¸ã¿ã§ãã i386ã®å ´å
ãã®è¨äºã¯Linux Advent Calendar 2019ã®1æ¥ç®ã®è¨äºã§ãã ã¯ããã« ç°å¢ ããã¨ãã uname(1) uname(1)ãåºåããå 容 strace(1) gdb(1) bpftrace systemtap Kernel Hack Livepatch ãã¾ã RHEL 8.1 CentOS 8 ã¾ã¨ã ã¯ããã« æ¬è¨äºã§ã¯Linuxãµã¼ãã®ãã¹ãåãLinuxã«ã¼ãã«ã®ãã¼ã¸ã§ã³ãcpuã¢ã¼ããã¯ãã£ãªã©ã®ã·ã¹ãã æ å ±ã表示ããuname(1)ãå©ç¨ãã¦Linuxç°å¢ã§ã®ãããã°ã¨ã«ã¼ãã«ããã¯ã«ã¤ãã¦èª¬æãã¦ããã¾ããæ¬è¨äºã§ã¯ã³ãã³ãããã¼ã«ã®ä½¿ãæ¹ã®èª¬æã§ã¯ãªãã¦ããããã使ã£ã¦ã©ã®ããã«ãããã°ããã®ãã¨ããã¨ããã説æãã¾ãã ç°å¢ ãã£ã¹ããªãã¥ã¼ã·ã§ã³ã«ã¯Fedora 31(x86_64)ãå©ç¨ãã¾ããåä½ç°å¢ã¯QEMUãlibvirtãOracle
ã«ã¼ãã«ãåæ§ç¯ãããã¨ãªãã«ã¼ãã«ã®åä½ãæ·±ã詳細ã«ç¢ºèªã§ããã¨ä¾¿å©ã§ããä»åç´¹ä»ããSystemTapã使ãã¨ãã¡ãã£ã¨ããã¹ã¯ãªããè¨èªãæ¸ãã ãã§ãã«ã¼ãã«ä¸ã®ç¹å®ã®å¦çãããã¯ããå¿ è¦ãªæ å ±ãåéã»åæã§ãã¾ãã SystemTapãããã¨ããããçç± SystemTapã¯å®è¡ä¸ã®ã«ã¼ãã«ã®å¦çãããã¯ãã¦ãå¿ è¦ã«å¿ãã¦æ å ±ãåéããåºåãããã¼ã«ã§ãã ã«ã¼ãã«ã®ãããã°ã«ããã代表çãªææ³ã¨è¨ãã°ãprintk()ã®å·®ãè¾¼ã¿ãã§ããprintk()é¢é£ã®é¢æ°ã使ãã°å¤ãã®åé¡ã®ç¶æ³ãææ¡ã§ãã¾ããããã®æ å ±ããã®ã¾ã¾è§£æ±ºã«ã¤ãªããä¾ã ã£ã¦ããããããã¾ã[1]â ã ãããããprintk()ãããã°ãã¯å¼·åãªææ³ã§ã¯ãããã®ã®ãããã¤ãã®å¼å®³ãåå¨ãã¾ãã printk()ãå·®ãè¾¼ãããã«ã«ã¼ãã«ãã¢ã¸ã¥ã¼ã«ããã«ããç´ããªãã¦ã¯ãªããªã ç°å¢ã«åãããã«ã¼ãã«ãã¢ã¸ã¥ã¼ã«ã®
kdump ã«ã¼ãã«ç¨ã«äºç´ãããã¡ã¢ãªã¼ã¯ãã·ã¹ãã ã®èµ·åæã«å¸¸ã«äºç´ããã¾ããã¤ã¾ããã¡ã¢ãªã¼ã®ãµã¤ãºã¯ã·ã¹ãã ã®ãã¼ããã¼ãã¼è¨å®ã§æå®ããã¾ããæ¬ã»ã¯ã·ã§ã³ã§ã¯ãGRUB ãã¼ããã¼ãã¼ã使ç¨ã㦠AMD64 ã·ã¹ãã ãIntel 64 ã·ã¹ãã ãããã³ IBM Power Systems ãµã¼ãã¼ã§äºç´ã¡ã¢ãªã¼ã®éã夿´ããæ¹æ³ã¨ãzipl ã使ç¨ã㦠IBM System z ã§å¤æ´ããæ¹æ³ã説æãã¾ããkdump ã«ã¼ãã«ç¨ã«äºç´ããã¡ã¢ãªã¼å®¹éãè¨å®ããã«ã¯ã/boot/grub/grub.conf ãã¡ã¤ã«ãç·¨éããä¾32.1ã/boot/grub/grub.conf ãã¡ã¤ã«ã®ãµã³ãã«ã ã«ç¤ºãããããã« kernel ãªãã·ã§ã³ã®ä¸è¦§ã« crashkernel= <size> M ã¾ã㯠crashkernel=auto ã追å ãã¾ããcrashkernel=auto
Recent posts: 04 Aug 2025 » When to Hire a Computer Performance Engineering Team (2025) part 1 of 2 22 May 2025 » 3 Years of Extremely Remote Work 01 May 2025 » Doom GPU Flame Graphs 29 Oct 2024 » AI Flame Graphs 22 Jul 2024 » No More Blue Fridays 24 Mar 2024 » Linux Crisis Tools 17 Mar 2024 » The Return of the Frame Pointers 10 Mar 2024 » eBPF Documentary 28 Apr 2023 » eBPF Observability Tools Ar
Table of Contents Introduction The Graph View Zooming In Zooming Out Graph Markers Graph Cursor Graph Plots Task Plots CPU Plots The List View Selecting an event Graph follows toggle Filters Task Filter Event Filter Advance Event Filter Introduction KernelShark is a front end reader of trace-cmd(1) output. "trace-cmd record" and "trace-cmd extract" create a trace.dat (trace-cmd.dat(5)) file. kerne
static, benchmarking, tuning: sar, perf-tools, bcc/BPF: bpftrace, BPF book: Images license: creative commons Attribution-ShareAlike 4.0. This page links to various Linux performance material I've created, including the tools maps on the right. These use a large font size to suit slide decks. You can also print them out for your office wall. They show: Linux observability tools, Linux static perfor
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ã¡ã³ããã³ã¹
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}