שיעור 26: perf, Flamegraphs וקפסטון — TCP Echo Server
perf הוא כלי הפרופיילינג הסטנדרטי ב-Linux: הוא מודד CPU cycles, cache misses, branch mispredictions ו-system calls. Flamegraphs ממירות את פלטו לויזואליזציה אינטואיטיבית. בחלק הקפסטון נבנה TCP echo server מולטי-thread ב-C++ שמשלב את כל הרעיונות מהקורס.
perf הוא כמו רופא שמאזין ללב התוכנה: הוא מדגם את מה שה-CPU עושה כל כמה מיליוניות שנייה ומראה לך היכן מתבזבז הזמן.
- perf stat
- מצב perf שמריץ תוכנה ומדווח מטריקות ביצועים בסיסיות: cycles, instructions, cache-misses, branch-misses, context-switches. כלי אבחון מהיר.
- perf record
- מצב perf שמדגם את ה-call stack של תוכנה ושומר לקובץ perf.data. משמש לאחר מכן עם perf report או flamegraph.
- Flamegraph (גרף להבות)
- ויזואליזציה של פרופיל CPU: ציר X = זמן CPU (רוחב = עלות), ציר Y = עומק call stack. כל מלבן = פונקציה. פסגות רחבות = hotspots.
- IPC (Instructions Per Cycle)
- מדד יעילות CPU: כמה הוראות מתבצעות בממוצע לכל מחזור שעון. IPC < 1 מסמן pipeline stalls (memory bound). IPC ≈ 3-4 אצל קוד טוב.
- פרויקט מסכם (Capstone)
- פרויקט שמשלב כמה נושאים שנלמדו בקורס. בשיעור זה: TCP echo server מולטי-thread ב-C++ שמשתמש ב-sockets, threads, mutexes ו-epoll.