
ã¢ã¬ã¯ãµã³ããŒã»ã¢ã¬ã¯ã·ãŒãšãïŒ Postgres Professional ïŒ
ããã°ã©ã ã³ãŒãã®ãããã¡ã€ãªã³ã°æ¹æ³ã«é¢ããHighLoad ++ 2016äŒè°ã®åªããæŠèŠã¬ããŒãã 枬å®äžã«çºçããäžè¬çãªãšã©ãŒã«ã€ããŠã ãããŠããã¡ãããããŒã«ã«ã€ããŠïŒ
-gettimeofday
-straceãltraceããã©ã¹
-gprof
-gdb / lldb
-ããã©ãŒãã³ã¹
-pmcstat
-SystemTap
-DTrace
-HeapTrack
-BPF / bcc

æåã¯ããã³ãããŒã¯ãè¡ããªãæ¹æ³ã«ã€ããŠããŸãæè¡çãªéšåã¯æã¡ãŸããã
ç§ã¯ã人ã ããã³ãããŒã¯ãè¡ãéã«ããããééããç¯ãããšãå€ãããšã芳å¯ããŸãã ãããŠãããã«ãããã®æåã®ãã®ããããŸã...
ããããªãå Žåã¯ãHighLoad ++ã®ãã¹ãŠã®ã¹ããŒã«ãŒããç°ãªããã¯ã¿ãŒã§è€æ°ã®å³ããã³ãŒãã³ã°ãåããŸãã 1ã€ã®ã³ãŒãã³ã°ãå¿ èŠã§ãããæ®ãã¯ãªãã·ã§ã³ã§ãã ãªãã·ã§ã³ã®ã³ãŒãã³ã°ã¯ãããšãã°ãèå°ææçãå æãããããªãã®ã§ãã ããã¯ããã®å šäœãæŽçããããã®éåžžã«å³ããã¢ãããŒãã§ãã ãããŠãç§ãHighLoad ++ã«é¢ããã¬ããŒããæåºãããšããäž»å¬è ã¯ãã®æè¡çãªéšåããã¹ãŠåé€ããããã«ã¯ãŒã«ãªãã®ãçŸããã¹ã¯ãªãŒã³ã·ã§ãããªã©ãè¿œå ããããšãææ¡ããŸããã ãããŠããããå®è¡ããæ¹æ³ãå ¥åããã³ãã³ãã«èå³ããã人ã¯ãããã¥ã¡ã³ããåç §ããããšãã§ããŸã-ãããçç±ã§ã-ãã¹ãŠãããã«ããã®ã§ãç§ã®ããã°ãžã®ãªã³ã¯ãæåã¯ããã³ãããŒã¯ãè¡ããªãæ¹æ³ã«ã€ããŠããŸãæè¡çãªéšåã¯æã¡ãŸããã
ããšãã°ãLinuxäžã§SystemTapãæ§ç¯ããã®ãé£ããå Žåã«èå³ãããå Žåã¯ãããã°ãžã®ãªã³ã¯ãéããšããã¹ãŠãããã«è¡šç€ºãããŸãã ãããŠããã®ã¬ããŒãã«ã¯ãããããã®ãããªã¬ãã¥ãŒããããäžè¬çãªããŒã«ãããããæäŸãããã®ããã€äœ¿çšããããæ³åããããšãã§ããŸãã
ç§ã¯ã人ã ããã³ãããŒã¯ãè¡ãéã«ããããééããç¯ãããšãå€ãããšã芳å¯ããŸãã
- ãŸããããã¯åçŸæ§ããããŸããã ããçš®ã®ããã°ãéãããšãã«ããäœãã枬å®ããçŸããã°ã©ãã£ãã¯ãååŸãã䟡å€ã®ãããœãªã¥ãŒã·ã§ã³ã«ãã500åé«éã«ãªã£ãããšããã¯ãŒã«ãªèšäºããããŸãã åæã«ããã®å®éšãç¹°ãè¿ãããã®ããŒã¿ãã¹ã¯ãªãããäœãäžããããŠããŸããã ããŠãããã¯äŸ¡å€ã®ãªããã³ãããŒã¯ã§ããããã®ããŒãžãããã«éããå¿
èŠããããŸãã ããªãããããç¹°ãè¿ãããšãã§ããªããªããã©ããã£ãŠãããä¿¡ããããšãã§ããŸããïŒ

å°ãªããšãã»ãŒåãçµæãåçŸã§ããã¯ãã§ãã
- ããªãã¯èªåã®èãã枬å®ããŠããŸããã å
žåçãªäŸïŒããŒããã©ã€ãã®åäœã枬å®ãããã ã©ããã§ddãå
¥åããŠæ¥œããã§ããŸãã ãã£ã¹ã¯ã«æžã蟌ãã§æž¬å®ããŸããã圌ãå®éã«æžã蟌ãé床ã¯ã©ããããã§ããã èŽè¡ã®èª°ãããããããã£ã¹ã¯é床ã®æž¬å®ã§ã¯ãªãçç±ãèšãããšãã§ããŸããïŒ
ããã§ã-å®éã«ã¯ããã¡ã€ã«ã·ã¹ãã ãã£ãã·ã¥ã®åäœé床ã枬å®ããããã§ãã ãããåé¿ããæ¹æ³ãèå³æ·±ãåé¡ã§ãã
- å¹³åãåãã ããã¯ç§ãã¡ã®äŒè°ã§ãã€ãç§ãæ¿æãããç§ã¯æååã«ç§ãç解ããŠãããªã¹ããŒãèŠãŸãã ãŠãŒã¶ãŒãªã¯ãšã¹ãã«ã©ãã ãè¿
éã«å¿çããããç解ããå¿
èŠããããŸããå¹³åå¿çæéã®ã°ã©ããäœæããŸãããã åé¡ã¯ããã®ã°ã©ãã®å¹³åæéãçŸãã-15ããªç§ã§ãã£ãŠãããããã15ç§ã®ããŒã¯ãããããšã§ãã 圌ãã¯éåžžã«ãŸãã§ããå¯èœæ§ãããããã®å¹³åãåãããšã¯ããããæ»ããã«ããŸãã ããªãã¯ãã¹ãŠãçŽ æŽããããšçŽ æŽããããšæããå®éã«ã¯ããã§ã¯ãããŸããã ãããã£ãŠãå°ãªããšãå¹³åãšæ倧ãæ§ç¯ããŸã-ããã¯ãã§ã«ããªãã«è¯ãçµµãäžããŸãã ãããããŸãã«ãåçŽãªå Žåã¯ã95çªç®ã99çªç®ã®ããŒã»ã³ã¿ã€ã«ãäœæããŸããããã«ãããããã«è¯ããã¥ãŒãåŸãããŸãã ãããã¯æ§ç¯ããã®ã«ããã»ã©å®ãã¯ãããŸããããååãšããŠã解決å¯èœã§ãã
- 誰ããã³ãããŒã¯ããã³ãããŒã¯ããŸããïŒ ããã¯ãã®ãããªåé¡ã§ãã ããšãã°ãã¢ããªã±ãŒã·ã§ã³ãçæãã1ç§ãããã®å¿çæ°ã枬å®ããã¯ãŒã«ãªãã¹ããäœæããŸããã 圌ãã¯ã1ç§ããã4000件ã®ãªã¯ãšã¹ãã枬å®ãåä¿¡ããŸããã ãã©ããããããååã§ã¯ãããŸãããæé©åããå¿
èŠããããŸããã åé¡ã¯ããã³ãããŒã¯ãã·ã³ã°ã«ã¹ã¬ããã§ããããšã§ãã å®éã®è² è·ã®äžã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯æ°çŸãæ°åã®ã¹ã¬ããã§å®è¡ãããŸãã å®éããã®å Žåãèªåã®ãã³ãããŒã¯ãããã«ããã¯ã§ããããšãèæ
®ããŠããŸããã ãããç解ããå¿
èŠããããŸãã
- åæã®æ¬ åŠã ãäœããæãã ããããã¹ãŠãæ§ãããã¹ãŠãæžãæããå¿
èŠãããããšæž¬å®ãããšãã§ãã ã€ãŸãããªããããæãã§ããããç解ããå¿
èŠããããŸãã
- ãšã©ãŒãç¡èŠããŸãã ããäžåºŠããã³ãããŒã¯ã䜿çšããŠäŸã«æ»ããŸãã ãããããªãã®ãã³ãããŒã¯ã§ã¯ãªãããããA / Bã§ãããããªãããããããªãã®ãµãŒãã¹ã«èšå®ããããã枬å®ããæ¯ç§500äžã®ãªã¯ãšã¹ããåãåãããç§ãã¡ã¯ãã¹ãŠéåžžã«éãããšåã³ãŸãã ããããããšãã°ãããããã¹ãŠã404ã®åçã§ãããšã¯æãããŸããã§ããã ã€ãŸãããšã©ãŒãèšç®ããå¿
èŠããããŸãã
- ééã£ãèšå®ã ç§ã®é åã§ã¯ãããŒã¿ããŒã¹ã§ã¯ãããã¯äžè¬çãªåé¡ã§ããããã©ã«ãã®Postgresèšå®ã§ã¯ãé»åã¬ã³ãžã§å®è¡ããããšããå§ãããŠããããã§ãã ãµãŒããŒã¯åŒ·åã«ãªã£ãããããã¹ãŠã®ããã©ã«ãèšå®ã倧å¹
ã«å€æŽããå¿
èŠããããŸãã ããå€ãã®ãããã¡ãããå€ãã®work_memã ãããŠããããã®èšå®ãäœãããããç解ããŠãã ããã ãã³ãããŒã¯ããã¹ããããããŒã¿ãã¹ã¯ãªããã§ã衚瀺ãããŸããããããã©ã«ãã®èšå®ã§ãã¹ãããŸããã-ããã©ã«ãã§ã¯MongoDBãšPostgres-ãã¹ãŠéããããšãã§ããŸãã ããã©ã«ãèšå®ã¯ãã©ã¡ããéãããç解ããéæ§é çãªæ¹æ³ã§ãã
- éå®åè² è·ã ããªãã¯90ïŒ
ã®æéãèªã¿ã10ïŒ
ãäœããæžããŠãããªãã決ããã®ã§ããç§ãã¡ã¯50代/ 50代ã®ãã³ãããŒã¯ãæžããŸãã ãªãããããã¹ãããã®ã§ããïŒ ã€ãŸããããªãã¯äœããæé©åããŠããŸãããããã¯è£œåã§ããŸã圹ã«ç«ã¡ãŸããã
- ããŒã±ãã£ã³ã°ãšã«ã¹ã¿ãã€ãºã ããã«å°ãã¯ãŒã«ã³ã¢ããããŸãã ããéèªãã³ã³ãã¥ãŒã¿ãŒããã¹ããããã³ãããŒã¯ãç¥ã£ãŠãããã®ãããªéã®çç£è
ãã20幎åã«äœå¹Žããã£ãããšãç§ã¯ç¢ºå®ã«ç¥ã£ãŠããŸãã ãããã®ãã³ãããŒã¯ã§èŠæ ããããããã«ã圌ãã¯éãéããŸããã ãã®çµæããã¹ãŠãéåžžã«ãã売ããŸããã ãããæåã®é©åæ¹æ³ã§ãã
å¥ã®ãã£ããã£ã³ã°æ¹æ³-MongoDBã䜿çšã§ããŸãã 圌ãã¯åžžã«å°ããªããŒã¿ã»ããã§ãã³ãããŒã¯ãå®è¡ããŠããããããã¹ãŠãã¡ã¢ãªã«åãŸããããŸãæ©èœããŸãã DataSetãã¡ã¢ãªã«åãŸããªããªããšããã¹ãŠãæ£åžžã«æ©èœããªããªããŸãã
ã€ãŸãããããååšããããšãç解ããå¿ èŠããããŸãããããã¯æ¶ç©ºã®ãã®ã§ã¯ãããŸããã
- ãŸããããã³ä»ã®ããããã£ã ç§ã«è¿ãäŸïŒOracle察Postgres-ã©ã¡ããéãã§ããïŒ Oracleã¯10åé«éãããããŸããããããã ãã®äŸ¡å€ã¯ãããŸãã ãããèæ
®ã«å
¥ããå¿
èŠããããŸãã ãŸãã¯å€åããã§ã¯ãªã-ç§ã¯äžåºŠOracleã®ãã³ãããŒã¯ãè¡ã£ãããšããªããæ£çŽã«èšã£ãŠåœŒããŸã£ããèŠãããšããªãã

å®å šãªå³ãäœæããããã«ãã³ãŒãã®ãã³ãããŒã¯ãè¡ãå¿ èŠããªãæ¹æ³ããå§ããŸãã æãç°¡åãªæ¹æ³ã¯gettimeofdayïŒïŒã§ãã æãªããã®æ¹æ³ã¯ãã³ãŒããããå Žåããããã©ãã ãéããé ãããç¥ãããã§ã-æåã«æéã枬å®ããã³ãŒããå®è¡ããæåŸã«æéã枬å®ãããã«ã¿ãã«ãŠã³ãããã³ãŒããéåžžã«æéãããã£ãŠãããšçµè«ä»ããŸããã

å®éãããã¯æãã°ãããæ¹æ³ã§ã¯ãããŸãããããšãã°ããã®ã³ãŒãããã«ãªå Žåãã€ãŸããããŸãã«ãããšãã°10,000ãªã¯ãšã¹ãã«1åãšãããããªå Žåã«äŸ¿å©ã§ãã å ããŠãããªããæããããããªãããã«ãããªãã¯ã·ã¹ãã ã³ãŒã«ãããŠããªããšèããã®ãç¿æ £ã§ããã»ã©é«äŸ¡ã§ã¯ãããŸããã Linuxã§ã¯ããã®ã¡ã«ããºã ã¯VDSOãšåŒã°ããŸãã å®éããã¹ãŠã®ããã»ã¹ã®ã¢ãã¬ã¹ç©ºéã«ãããããããŒãžãã«ãŒãã«ã«ãããgettimeofdayïŒïŒã¯ã¡ã¢ãªã¢ã¯ã»ã¹ã«ãªããŸãããsyscallã¯çºçããŸããã
ã¹ãã³ããã¯ã䜿ã£ãŠäœããããŠããå Žåã¯å®äŸ¡ã§ããã«ããããããã䜿çšããªãã§ãã ããã ã¹ãã³ããã¯èªäœã¯éåžžã«é«éã«åäœããããã§ãã ã€ãŸãã枬å®å¯Ÿè±¡ã¯å°ãªããšãããªç§ã§ããå¿ èŠããããŸããããã§ãªãå Žåããšã©ãŒã¯æž¬å®ã¬ãã«ã§çºçããŸãã

straceãltraceãtrussãªã©ã®ããŒã«ã¯ã¯ãŒã«ãªããŒã«ã§ãããsyscallãå®è¡ããŠããæéã瀺ã-cãã©ã°ããããŸãã ããŠãltraceã¯ã©ã€ãã©ãªããã·ãŒãžã£ã枬å®ããstraceã¯syscallsã枬å®ããŸãããååãšããŠããããã¯ããã€ãã®ã¿ã¹ã¯ã®ã©ããã«äŸ¿å©ã§ãã ãã䜿ããšã¯èšããŸããã

Gprofããã®ãããªã¯ãŒã«ãªããŒã«ããããŸããã¹ã©ã€ãã¯ããã¹ãã¬ããŒãã®äŸã瀺ããŠããŸãã ãããæããã§ããããã§ã¯ãããã°ã©ã ã«æé ããããäœåºŠãåŒã³åºãããããŒã»ã³ãåäœã§å®è¡ãããŸããã ã·ã³ãã«ã§çŽæçãªã¬ããŒãããã€ã¯ããã³ãããŒã¯ãäœæããå Žåãããã䜿çšã§ããŸãã
gprofã䜿çšããŠããããã®ç»åãçæã§ããŸãã

ããããããã¯ããããããªãæ¹æ³ã®äŸã§ãã ãã®åçãèŠããŠãããŠãã ããã6ã€ã®æ£æ¹åœ¢ããããŸãã ããããå ããã¹ããŒã¹ã«æ³šæããŠãã ãããããã§ã¯ãããã·ãŒãžã£ã®ååãäœããç¢å°ã®äžã«åžžã«æžãããŠããŸãããäœãæ確ã§ã¯ãããŸãã-ããã¯å€ãã®ã¹ããŒã¹ãå æããŸãã ãããããã¯ããã«èŠèŠçãªã¬ããŒãã衚瀺ãããŸãã ããããååãšããŠãçŸããåçãåœå±ããã³ãã瀺ãããšãã§ããŸãã

ãããã¬ãŒ å®éãããã¯æ¢ã«ããããã¡ã€ãªã³ã°æã«å®éã«äœ¿çšããªããã°ãªããªãããŒã«ã®äŸã§ãããããã³ãã³ããå®è¡ããã¯ãŒã«ãªããããã£ãããããã®ãããã³ãã³ãã»ããïŒbtïŒã«ããã¯ãã©ãã¯ãæžã蟌ãããšãã§ããããã§ãã ããã¯ãããã¯ã®ç«¶åããããã°ãããšããããã¯ãäºããšãã«éåžžã«äŸ¿å©ã§ãã

http://habr.ru/p/310372/
ããã«å°ãã¯ãŒã«ã³ã¢ããããŸãã ç§ã®æèŠã§ã¯ãããã¯ç§ãPostgresçšã«æžããæåã®ãããã§ããã 第äºã«ãç§ã¯èŠããŠããŸããã Postgresã«ã¯ãPostgresã¿ã¹ã¯ã«åãããŠã«ã¹ã¿ãã€ãºãããç¬èªã®ããã·ã¥ããŒãã«ã®å®è£ ããããŸãã ãŸãããã®ãããªãã©ã°ã䜿çšããŠäœæããããŸããŸãªããã»ã¹ã§äœ¿çšã§ããŸãã ã¯ã©ã€ã¢ã³ãã¯ãããã§ç§ã¯ãã®ãããªèŠæ±ãããŠããã®ã«ããã¹ãŠããã®ãããªèšç»ã«å©ããããŠããããšããåé¡ãæãä»ããŸããã èå³æ·±ãããšã«ãæåã¯ããã¯ãã©ãã¯ææ³ã䜿çšããŠãgdbã10åéå§ããããã«èŠããŸããã5ã€ã®ã±ãŒã¹ã§ã¯ããã¯ãã©ãã¯ãããã¯ãååŸãç¶ããååã®ã±ãŒã¹ã§ã¯ä»ã®äœãã«ããã£ãŠããŸããããã¯ã«æãã£ãŠãããäœããééã£ãŠããŸãã
ãšããã§ãé«è² è·ã·ã¹ãã HighLoad ++ã®éçºè ã®äŒè°ã®éå»5幎éã®å ¬éãããªãå ¬éããŸããã YouTubeãã£ã³ãã«ãèŠèŽãåŠç¿ãå ±æã賌èªããŸã ã
ããã¯ãã©ãã¯ã«ãã£ãŠãç§ã¯ãããããã¯ãååŸãŸãã¯è§£æŸããã³ãŒãã®çš®é¡ãèŠã€ããããšãã§ããŸããã ããã¯é·ã話ã§ãããªã³ã¯ããã©ã£ãŠHabréã®èšäºãèªãããšãã§ããŸãã æè¡çãªè©³çŽ°ãããããã«ãŒã®ãã£ã¹ã«ãã·ã§ã³ãžã®ãªã³ã¯ããããŸãã
äžèšã®ã¹ã©ã€ãã§ã¯ãããã¯ã®ååŸãšè§£æŸã®éã«ããã³ãŒãã®äžéšãããã€ããã·ã¥ã®ã©ããã«èœäžããã¹ãã³ããã¯ãååŸãããšå転ããŠããŸããã ãããã¬ãŒã®å©ããåããŠãããããèŠã€ããä¿®æ£ããæäŸããããšãã§ããŸããã ãããŠããã®ãã€ãããã·ã¥ïŒããã¯Postgresã®ããã·ã¥ãã¬ãŒãã§ãïŒã®ã¹ãã³ããã¯ã¯ã8ãŸãã¯16ã®ã¹ãã³ããã¯ã«å€ãããŸããã ãªããšããã¬ã€ã§ããŸãããããã§ã«9.6ã«ãªã£ãŠããŸãã

perf topã¯äžäœã®æé ã瀺ããŠãããããPerfã¯åªããããŒã«ã§ãã ãã®å Žåã瀺ãããããã»ã¹ã§ãããããå®è¡ãããŠããæéã äžéšã«ã¯30ïŒ ã20ïŒ ã衚瀺ãããResourceOwnerã衚瀺ãããŸãã次ã®ã¯ãŒã«ãªã¹ããŒãªãŒãå®éã®ãããã«é¢ãããã®ã§ãããããããã·ãŒãžã£ã®ååã«ééãã¯ãããŸããã

ã¯ã©ã€ã¢ã³ããæ¥ãŠèšã£ãïŒãç§ã¯ãã®ãããªèŠæ±ãšãã®ãããªã¹ããŒã ãæã£ãŠããŸãã ãã¹ãŠãæãã§ãã ã©ãããïŒã ãããã°ãéå§ããŸããã ãããŠã圌ã¯ãšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ãæã¡ãããŒãã«ãš1000åã®åããŒãã«ãæã£ãŠããŸãïŒPostgresã§ã¯ã誰ãç¥ããªãå ŽåãããŒãã«ã®ç¶æ¿ããããŸãïŒã ãŸããperf topã䜿çšãããšãResourceOwnerã®ãã¹ãŠãéãããšãããããŸãã ResourceOwnerã¯ãããŸããŸãªãªãœãŒã¹ããã¡ã€ã«ãå ±æã¡ã¢ãªãªã©ãæ ŒçŽãããªããžã§ã¯ãã§ãïŒåèªãªããžã§ã¯ããCèšèªã«é©çšãããéãïŒã ãããŠãéåžžããªãœãŒã¹ãé åã«å²ãåœãŠãŠé åã«å ¥ããããããéã®é åºã§è§£æŸãããšããä»®å®ã®äžã§æžãããŠããŸãã ãããã£ãŠããªãœãŒã¹ãåé€ãããšãã圌ã¯ãªãœãŒã¹ãæåŸããæ€çŽ¢ãå§ããŸãã ããæå³ã§ã圌ã¯é åã®ãµã€ãºãç¥ã£ãŠããŸã-æåŸã®èŠçŽ ã®ã€ã³ããã¯ã¹ãæã£ãŠããŸãã ãã®æ¡ä»¶ã¯åžžã«æºããããŠããããã§ã¯ãªãã圌ã¯ãã®é åã®ãã¹ãŠã®æ¹åãèŠãå¿ èŠããããããããã¯æãã§ããããšãå€æããŸããã ãããã¯ãäžå®éã®ãªãœãŒã¹ïŒçŽ16ãŸãã¯ããã®æ°ïŒã§ããã®é åãããã·ã¥ããŒãã«ã«å€ãããšããäºå®ã«ãããŸãã 競åã解決ãããšããããªãã¯ãã€ããé åã®äžããããã€ã³ããã¯ã¹ã«æ¥ãŠãããã©ã¡ããã®åŽã«è¡ããŸãã
ãšããã§ã誰ãã第3å幎çŽã§èª°ãããã·ã¥ããŒãã«ãäœæããå¿ èŠãããã®ãââãšãã質åã«èå³ãããå Žåã¯ãæšæºã®å®è£ ãé©ããŠããªãããã2ã€ã®ãããã§ããã·ã¥ããŒãã«ãäœæããŸãã ããã¯9.6ã«ãæ¢ã«ååšããŸãã匷ãããŒãã£ã·ã§ã³åãããããŒãã«ãããå ŽåãResourceOwnerã¯ãã«ã«ãªããŸããã ç§ã¯ã圌ã¯ãŸã æãã§ããã匱ãã§ãã

perfã䜿çšãããšããã¬ãŒã ã°ã©ããšåŒã°ããçŸããåçãäœæã§ããŸãã äžããäžã«èªã¿ãŸãã 以äžã«æé ããããŸã-ãããè²»ããæéã«æ¯äŸããŠãé çªã«åŒã³åºããŸã-ä»ã®æé ã«åå²ãããŸãã ããããç§ãã¡ã¯äžã«è¡ãã圌女ãã©ãã§éããæéãæ¯äŸçã«å ±æããŸãã ãããŠããã«äžã ããã¯éåžžã«æçœã§ãããåããŠèŠãå Žåã¯çããããšã§ãã å®éãããã¯éåžžã«èŠèŠçãªã¬ããŒãã§ãããGprofãäœæããŠããã°ã©ãã®äŸãããã¯ããã«èŠèŠçã§ãã å Žæãã©ãã ãçµæžçã«äœ¿çšãããŠãããã«æ³šæããŠãã ãããã¹ã©ã€ãã«è¡šç€ºããããšã¯ã§ããŸãããããã¹ãŠã¯ãªãã¯ã§ããŸãã ãããŠåœŒã¯èå³ã瀺ãæããããæã£ãŠããŸãã
ããã¯æ¡å€§éšåã§ããããã¯éšåã®äžå€®ã®ã©ããã«ãããŸãã

å®éãããã§ãããããã¹ãŠã§ãã ããããã䜿çšããŸãã åã®äœæ¥ã§ããã°ãåãæ¹æ³ã§åæããŸããã å¥ã®è©±ããããŸãã-AKã¯ã©ã¹ã¿ãŒãåæ£ã¢ããªã±ãŒã·ã§ã³ãããããã°ãããã®ãããªãã®ãæ§ç¯ããã³ãŒããã©ãã§é ããªãããç解ããããšããŸããã ãã¡ããããã°ã¯ãã¹ãŠã®ããã¯ãšã³ãããéèšããå¿ èŠããããŸããã äžè¬çã«ã䟿å©ãªããšã¯ãç§ã¯çã«ããããå§ãããŸãã

http://youtu.be/tDacjrSCeq4
ããã¯ãã©ã³ãã³ã»ã°ã¬ãã°ã§ãã 圌ã¯ãã¬ãŒã ã°ã©ããçºæããã»ãšãã©èªåèªèº«ãå®è¡ããŸããã ããããã圌ã¯å®å šã«äžäººã§ã¯ãããŸããã§ããããããªãã®æè³ãããŸããã 圌ã¯YouTubeãããªã§ãç¥ãããŠããŸããããã§ã¯ãããŒã¿ã»ã³ã¿ãŒã®ããŒããã©ã€ãã§å«ã³ããããã®ãã©ã€ãã«ã¢ã¯ã»ã¹ãããšã¬ã€ãã³ã·ãŒãå¢å€§ããŸããçŽ æŽããããããªã§ãã 誰ããèå³ãæã£ãŠããå Žåãããã¯æ¬åœã®ãããã¯ã§ãããSSDã§åäœãããã©ããã¯ããããŸããã
æè¿ãéè¡ã®æ¶é²èšç·Žäžã«ãç«çœãæ¶ç«ããã¬ã¹ãäŸçµŠãããã€ãã®å£loudã倧ãããããããããŒã¿ã»ã³ã¿ãŒå šäœãåæããããšããåæ§ã®è©±ããããŸããã ã€ãŸãã空æ°æ¯åããã¹ãŠã®ãã£ã¹ã¯ãããã¯ã¢ãŠãããŸããã
ãã©ã³ãã³ã«æ»ããŸãããããã¡ã€ãªã³ã°ã«é¢ãããã¹ãŠã®ç¥èããããããã«å€ãã泚ã蟌ãã§ããããã§ããçŸåšã¯Netflixã§ãããè¡ã£ãŠããŸãã

http://eax.me/freebsd-pmcstat/
Pmcstatã¯ãFreeBSDå°çšã®ããŒã«ã§ãã ãããã®ã¹ã©ã€ããäœæãããšãã誰ãFreeBSDãæã£ãŠããªãã ãããšæã£ãã®ã§ãpmcstatã«ã€ããŠã®è©³çŽ°ã¯ç¹ã«ãããŸããã æ®ãã¯ããŸãé¢çœããªãã ããããèŠçŽãèŠããšãperfã䜿çšããå Žåãšåãããã«ãã¹ãŠãå®è¡ã§ããŸãã 圌ã¯ãŸããããããç²åŸãããã¬ãŒã ã°ã©ããäœæããŸãã圌ã¯æªãã¯ãªããç°ãªãããŒã ã§ãã æ°ã«ãã人ã¯ãããã«ç¹å®ã®èšäºãžã®ãªã³ã¯ããããŸãã

ããæ·±å»ãªããŒã«ã«ç§»ããŸãã SystemTap ãã®äžã«ã¯ãäœããé ããªãCPUãããã¡ã€ãªã³ã°ããããSystemTapã䜿çšãããšããã«å€ãã®ããšãã§ããŸã-ã«ãŒãã«å ã®æååãèŠãŠããããã¯ãŒã¯äžã§æã£ãŠãããã±ããæ°ã枬å®ãããã£ã¹ã¯ã«ã¢ã¯ã»ã¹ãããã¹ãŠã枬å®ã§ããŸãããªãã®æ³ååã«ãã£ãŠã®ã¿å¶éãããŸãã SystemTapã§ã¯ããã®ãããªã¹ã¯ãªãããããã§äœæã§ããŸãããã®å Žåãip_rcvåŒã³åºãããã¬ãŒã¹ãããŸããã€ãŸããäœããã®çš®é¡ã®iPãã±ãããåä¿¡ããŸãã

é·æãšçæã äž»ãªçæ2.ãŸããããã¯Linuxã®å ¬åŒããŒã«ã§ã¯ãããŸãããRedHatã®æ åœè ã¯ãã³ãŒãããããã°ããããã«ãäž»ã«èªåèªèº«ã§èŠãããã«èŠèœãšããŠããŸããã ã€ã³ã¹ããŒã«ããã®ã¯éåžžã«äžäŸ¿ã§ããã«ãŒãã«ãããã°ã·ã³ãã«ãå«ãããã±ãŒãžãããŠã³ããŒãããŠããã€ã³ã¹ããŒã«ããSystemTapãéåžžã«é·ãæéã³ã³ãã€ã«ããå¿ èŠããããŸãããŸããã³ã³ãã€ã«ãããã»ã©å®¹æã§ã¯ãªããããããŒãžã§ã³ãå¿ èŠã§ãã ããããæçµçã«ã¯æ©èœãå§ããŸãã 2çªç®ã®æ¬ ç¹ã¯ãåæãã察象ã§ããããã¿ãŒã®åºç€ãååã«ç解ããå¿ èŠãããããšã§ãã 誰ããLinuxã«ãŒãã«ãå¿ããç¥ã£ãŠããããã§ã¯ãããŸããã ããããã³ãŒããããç¥ã£ãŠããã°ãããã䜿çšã§ããŸãã
èå³æ·±ãç¹æ§ããããŸã-ã³ãŒãã¯Cã«å€æãããã«ãŒãã«ã¢ãžã¥ãŒã«ã«ã³ã³ãã€ã«ãããŸããã«ãŒãã«ã¢ãžã¥ãŒã«ã¯ããŒãããããã¹ãŠã®çµ±èšããã¹ãŠã®ãã¬ãŒã¹ãåéããŸãã ãã®å ŽåããŒãã§é€ç®ããã®ãæããããšã¯ã§ããŸãããéåç §ãã€ã³ã¿ãŒã¯ééã£ãŠããŸãã ãããã¹ã¯ãªããèšèªã§èšè¿°ããå Žåãã«ãŒãã«ã¯ã©ãã·ã¥ã¯çºçããã足ããããã«æããããŸããŠã¢ã³ããŒããããŸãããã«ãŒãã«ã¯åŒãç¶ãåäœããŸãã
èªååæšè«ããããŸãã 確ãã«ã2ã€ãŸãã¯3ã€ã®ã¿ã€ããããããŸãããããããã¯èªåçã«è¡šç€ºãããŸãã
å人çã«ã¯ãå®å®ãã楜åšãšã¯æããªãã®ã§ãæ¬çªç°å¢ã§äœ¿çšããã®ãæãã§ãããã 1ã€ã®äºå®ã¯ã10ç§ã®ã¹ã¯ãªãããã³ã³ãã€ã«ããŠããŒãããããšã§ãããããã§æžéããã®ã§ã¯ãªããæžéãããã®ã¯ããŸãæ確ã§ã¯ãããŸããã ç§ã¯ãããå±éºã«ããããŸããããå€åããªãã¯å€§èã§ãã

DTraceã¯ãFreeBSDã ãã§ãªãLinuxã§ã䜿çšã§ããã¯ãŒã«ãªããŒã«ã§ããããã¹ãŠåé¡ãããŸããã SystemTapã«äŒŒãŠããŸãããã®äŸã§ã¯ãpostgresãšåŒã°ããããã»ã¹ã®ããŒãªã³ã°ã·ã¹ãã ã³ãŒã«ããã¬ãŒã¹ããŠããŸãã åŒã³åºãããåŒæ°ãšè¿ããããã®ã§ãã¬ãŒã¹ããŸãã

é·æãšçæã ãŸããSystemTapãšã¯ç°ãªãããã®ãŸãŸã·ã¹ãã ã«çŽæ¥çµã¿èŸŒãŸããŠãããããã€ã³ã¹ããŒã«ãã³ã³ãã€ã«ã®å¿ èŠã¯ãããŸããã FreeBSDãMac OSã§å©çšå¯èœã§ãã Linuxã®å Žåãäœããã®æ¹æ³ã§Oracle Linuxã䜿çšããŠããå ŽåããããŸãã ããã«ãGitHubã«dtrace4linuxãããžã§ã¯ãããããã³ã³ãã€ã«ãåäœã確èªããŸããã ååãšããŠã䜿çšã§ããŸãã
SystemTapãšã¯ç°ãªããDTraceã¯æ¬çªç°å¢ã§äœ¿çšããã®ãæãããã§ã¯ãããŸãããæŠéç°å¢ã§Macã«ã¢ã¯ã»ã¹ããŠã奜ããªãã®ããã¬ãŒã¹ããŠãã ããã ç§ã®äž»èŠ³çãªæèŠã«ãããšãDTraceã¯ç®¡çè ã«ãšã£ãŠãã䟿å©ã§ãããªããªããã«ãŒãã«ã«ã¯å€ãã®ãµã³ãã«ããããã³ãŒãããŒã¹ãç¥ãå¿ èŠã¯ãªãããIPãã±ããã®çµ±èšãåéããã-ã©ãã ãè¡ã£ãã®ããã©ãã ãè¡ã£ãã®ãã ã ãšããã§ãæ¢è£œã®ãŠãŒãã£ãªãã£ã»ããããããŸããã¹ã¯ãªããããã¹ãŠèªåã§äœæããå¿ èŠã¯ãããŸããã DTrace ToolkitãåŒã³åºãããŸããã
ãŸããSystemTapã¯ç®¡çè åãã§ã¯ãªããéçºè åãã§ãããã«ãŒãã«ã³ãŒããç¥ã£ãŠããã®ã§ãã³ãŒããèšè¿°ãããããããåœãŠãã«ãã®å Žæã§ãã¬ã€ãããã

ãããŸã§ãCPU䜿çšçã®èŠ³ç¹ãããããã¡ã€ãªã³ã°ã«ã€ããŠèª¬æããŠããŸãããããã1ã€ã®äžè¬çãªåé¡ã¯ãã倧éã®ã¡ã¢ãªãæ¶è²»ãããŠããå Žåã¯ã©ããªããŸããïŒãã§ãã å人çã«ãç§ã¯HeapTrackããŒã«ã奜ãã§ããValgrindMassifã䜿çšããããšãããå Žåãããã¯åãã§ãããé«éã§ãããå¶éããããŸã-Linuxã§ã®ã¿æ©èœããŸãã
ããïŒäžã®ã¹ã©ã€ãïŒã¯ããã¹ãã¬ããŒãã®äŸã§ããã¡ã¢ãªã®ã»ãšãã©ãé£ãå°œããå ŽæââãèŠã€ãããŸããç¹å®ã®è¡çªå·ããœãŒã¹ã³ãŒãä»ãã®ãã¡ã€ã«åãªã©ããããŸãã

ããã«ã圌ã¯Massif VisualizerããŒã«ã§ãã®ãããªçŸããã¬ããŒããäœæã§ããŸãã ãã®äžã®ãã¹ãŠãéãããšãã§ããŸããããã¯ãã¹ãŠãã€ããã¯ã¹ã§ãã ããã«èšæ¶ãæé·ããããããããŒã¯ã«éããããããèœäžãå§ããèªç±ã«ãªããç®ç«ã¡ãå³ã«çè·¡ããããŸãã ãã¹ãŠãéåžžã«æ確ã§çŸããã§ãã

é·æãšçæã Valgrindãšã¯ç°ãªããé«éã§ãã å®è¡äžã®ããã»ã¹ã«ããã¿ã€ããŠããã®äžã§ããã»ã¹ãå®è¡ã§ããŸãã çŸããã¬ããŒãã 圌ã¯èšå¿µç¢ãèŠã€ããæ¹æ³ãç¥ã£ãŠããŸãã ããªãã®æšæºçãªèšèªã©ã€ãã©ãªã圌ã®å éšã®ããŒãºã®ããã€ãã«16 KBãå²ãåœãŠããããããªãªãŒã¹ããªãã£ãå Žåã圌ã¯ããããå°ãæ²ãã£ããšèŠã€ããŸããããŸãããªãïŒãã圌ã¯ãããèšå¿µã ãšèšãã§ããã ããããååãšããŠãããããã¹ãŠã«ãããããããéåžžã«äŸ¿å©ãªããŒã«ã§ãã
æãå€ãå²ãåœãŠãããŠãã8ãã€ãã®æçãšãå°ãé »ç¹ã«å²ãåœãŠãããŠãã32ãã€ãã®ã¡ã¢ãªãæã€ãã¹ãã°ã©ã ãäœæããããšãã§ããŸãã ãã®ãããªçŸãããã¹ãã°ã©ã ãåŸãããŸãã
ã¹ã¿ãã¯ãå¿ èŠãªå ŽåããŸãã¯Linux以å€ã®äœããå¿ èŠãªå Žåã¯ãValgrindã䜿çšããŸãã ç§ã¯Linux'oidãªã®ã§ãValgrindã«ã€ããŠã¯äœãç¥ããŸããã

Linuxã«ã¯ãBPFãšåŒã°ãããã®ãããªãããã¯ããããŸããããã¯å ã ããŒã¯ã¬ãŒãã±ãããã£ã«ã¿ãŒã§ãããååã瀺ãããã«ãããŒã¯ã¬ãŒãšäœããã®ãã±ãããã£ã«ã¿ãªã³ã°ã«é¢é£ããŠããŸããã2.6ã®2.6ãã©ã³ãã®ã©ããã«äžåºŠäžéžããŸããã ããããçµæãšããŠãããã¯æçµæ±ºå®ãããå®éããã§ã«èšåããããã©ã³ãã³ã»ã°ã¬ãã°ã®å©ããªãã§ã¯ãªããLinuxäžã®DTraceã«å€ãããŸããã
ããã«ããããŸã£ããåãããšããã¹ãŠå¯èœã«ãªããŸãã Brandonã¯æè¿ãããã°ãã¹ããäœæããŸããããã®ããã°ã§ã¯ã4.9ã«ãŒãã«ã¯çŸåšãŸã ãªãªãŒã¹åè£ã§ããããŸããªãBPFã®å€æŽããªãªãŒã¹ãããäºå®ã§ãã 倧ããªå€§ããªå€æŽã¯ãããŸãããäœãã解決ãããããããŸããããå°ãä¿®æ£ãããããããŸããããç©æ¥µçã«è¿œå ããããã«ãããã¯ããèµ·ãããŸããã
Bccã¯ãBPFãã«ãŒãã«å ã®ããŸããŸãªå Žæã®ãããã¡ã€ã«ãäœæããããã«äœ¿çšãããŠãŒãã£ãªãã£ã®ã»ããã§ãã åçã§ã¯ããããã¯ãã¹ãŠãŠãŒãã£ãªãã£ã®ååã§ãã å®éã«ã¯ãã«ãŒãã«å ã®ä»»æã®å Žæãã«ãŒãã«å ã®ãããã¡ã€ã«ãç Žæ£ã§ããŸãã
BPFã®æ¬ ç¹ã¯ãDTraceãSystemTapã®ããã«ç¬èªã®ã¹ã¯ãªããèšèªããŸã æã£ãŠããªãããšã§ããããã®æ¹åã«ã¯ãã§ã«ææããããŸãã ç¹ã«ãRed Hatã®é£äžãæ¥ç¶ããSystemTapãååŸããŠBPFçšã«æ§ç¯ããŸããã ã€ãŸããSystemTapèšèªã䜿çšãããŸãããBPFã§æ©èœããŸãã ããã¯ãŸã ããããå¶éãããŠãããæåååããŸã£ãããµããŒãããŠããŸãããã圌ãã¯ããã«åãçµãã§ããŸãã
èŠããã«ãBPFã¯ç§ãã¡ã®é ãæããæªæ¥ã®ãããªãã®ã§ãããFacebookããã®ã¹ã¯ãªããããã£ããããRed Hatã¯SystemTapãæã£ãŠããã®ã§ããã¹ãŠã®äŒæ¥ãæçµçã«åºäŒã£ãæ倧ã®å ±éç¹ã§ãããã¬ãŒã¹çšã«ãã®ãããªãã®ãéçºããå¿ èŠããããŸããã 圌ãã¯ä»äºã解決ããä»ã«äœãå¿ èŠãšããŸããã ããããBPFã¯çµæãšããŠãã¹ãŠã®äººã®ããŒãºã解決ãããã®ã§ãããããã«ã³ã¢ã®æºåãã§ããŠãããæçµçã«ã¯èª°ããããã«åãçµã¿ãæ°å¹ŽåŸã«ã¯å€§ããªå¹žçŠãããããããããã§ãã

äœçŸäžãã®äººã ã®å¿ãåºæ¿ããäž»ãªè³ªåïŒãããŠãå€ãã®ããŒã«ãäœãããã€äœ¿ãã¹ããïŒã ç§ãå人çã«äœ¿çšãããã®ã ãããã¬ãŒ ããã¯ã®ç«¶åãçãããå Žåããããçãã®ã¯ç°¡åã§ããperftopã§ã¯ã誰ããå€ãã®æéãé£ã¹ãŠããããšã¯ããããŸãããããããããã¯ã§ãã³ã°ããŸãã ããã©ãŒãã³ã¹ãCPUã«åºäŒã£ããšæãå Žåã¯ãéåžžã®htopã§èŠãããšãã§ããŸã-ããã«ããã»ã¹ããããCPUã倧éã«æ¶è²»ããŸãã PmcstatãFreeBSDãSystemTapããæã¡ã®å Žåãperfããããšããçç±ã§åœ¹ã«ç«ããªãããŒã«ã®ããã§ã-ãã䟿å©ã§ãã ã€ãŸãããããã¡ã€ãªã³ã°ã®ã³ã³ããã¹ãã§ãã€ãŸãperfã§ãããã¡ã€ã«ãäœæã§ããŸãããSystemTapããã¬ãŒã¹ããããã«ã¯ããããã¡ã€ãªã³ã°ã ãã§ã¯ãããŸããã
DTraceã¯ãããªããMacã®äžã«åº§ã£ãŠããå Žåããã¹ãŠãç¥ã£ãŠããã®ã§ããããããªãã®ãã¹ãŠã§ãã
HeapTrack for memoryãVagrant Massif-Linuxã䜿çšããŠããå ŽåãBPFã¯æããæªæ¥ã§ãããä»ã§ã¯4. 9ã補åã«è¿œå ããããšã¯ããŸãããããããã倧èã§ãã

Brandon Greggãå ±èããæ¬ããå§ãããŸãã
1ã€ç®ã¯ãã·ã¹ãã ããã©ãŒãã³ã¹ïŒãšã³ã¿ãŒãã©ã€ãºãšã¯ã©ãŠãã§ãããã°ãããæ¬ã§ããã誰ã«ãšã£ãŠãå¿ èªã§ãã ããã¯ãç§ãèªãã äžã§ããã°ã©ãã³ã°ã«é¢é£ããæé«ã®æ¬ã®1ã€ã§ãã 圌女ã¯ç§ã®è³ãå¹ãé£ã°ããåŸãç Žçãååã®è³ã«è§Šããäžè¬ã«ãããèªãã ã
DTraceã«ã€ããŠã®2çªç®ã®æ¬ã¯ããã©ã³ãã³ã°ã¬ãã°ã®æ¬ã§ããããç§ãã©ãã»ã©æ³šç®ã«å€ãããåãããªãç·ãšå ±èããŠããŸãã ç§ã¯ãããèªã¿ãŸããã§ãããç§ã¯ããã調ã¹ãŸãã;ããã¯DTraceã«é¢ããã¬ã·ãã®éåžžã«å€§ããªã³ã¬ã¯ã·ã§ã³ã§ãã ã¹ã¯ãªããã®äŸãšã³ãã³ããæäŸããŸãã ãããŠåããŒãžã«ã ããã¯ããŸãèå³æ·±ãèªã¿ç©ã§ã¯ãªãããã«æããŸãããDTraceã«éåžžã«èå³ãããå Žåã¯ãå€æ¹ã«ç®ãéããŠã害ã¯ãããŸããã
ãªã³ã©ã€ã³ãªãœãŒã¹ã®æïŒ
- ããã¯ç§ã®ããã°ãžã®ãªã³ã¯ã§ãã
- http://www.brendangregg.com/blog/index.html-Brandon Greggã®ããã°-賌èªããŠãã ããã圌ã¯ããã«çŽ æŽããããã®ãæçš¿ããŸãã
- http://dtrace.org/blogs/-DTraceããã°ãèªãã§ããŸããèå³æ·±ãèšäºããããŸãã
- ããã«ã https://sourceware.org/systemtap/-SystemTapã®ãµã€ãã
- wikiã®FreeBSD- https://wiki.freebsd.org/DTrace
- ãããŠãã³ãããã¯ã§ã¯ãDTraceã«ã€ããŠèªãããšãã§ããŸãã Macã䜿çšããŠããå Žåã§ãããšã«ãããã³ãããã¯ã«ç®ãéããšãè¯ãäŸããããŸã-https://www.freebsd.org/doc/handbook/dtrace.html
- æåŸã«ãIntelã®ããã¥ã¢ã«-http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html å®éã«ã¯ãperfãå¯çããŠãããã®ãPMCãäœã§ããããçŽæ¥èªãããšãã§ããŸããããããã¹ãŠã枬å®ããããã®åœä»€ãããã»ããµãŒã«ãããŸãã
ç§ã«ã¯ãã¹ãŠããããŸãã
ãã®ã¬ããŒãã¯ãé«è² è·ã·ã¹ãã HighLoad ++ã®éçºè ã®äŒè°ã§è¡ãããæé«ã®ã¹ããŒãã®1ã€ã®è»¢åã§ã ã HighLoad ++ 2017ã«ã³ãã¡ã¬ã³ã¹ã®1ãææªæºãæ®ããŸãã
ç§ãã¡ã¯ãã§ã«äŒè°ããã°ã©ã ãæºåããŠãããçŸåšã¹ã±ãžã¥ãŒã«ãç©æ¥µçã«åœ¢æãããŠããŸãã
ä»å¹Žãã Right Handles ãã¿ã°ã«ã€ããŠå ±åããŸãã
- ãã¹ãŠãçµããã /ã¢ã³ãã¬ã€ã»ã¢ã¯ã»ãã
- ã·ã¹ãã èšèšã®æ®µéã§ã®DDoSã»ãã¥ãªã㣠/ Ramil Khantimirov
- å€æ¹ã«äœããã¹ããã++ i + ++ iããããã«ãªããç¥ã£ãŠãããªã /ã¢ã³ãã¬ã€ã»ãããã£ã³
- ã³ã³ããŒãã³ãã©ã€ãã©ãªãå£ããã«éçºããæ¹æ³ /ã¢ãŒãµãŒãŠããã
ãŸãããããã®è³æã®äžéšã¯ãé«è² è·ã·ã¹ãã HighLoadã®éçºã«é¢ãããªã³ã©ã€ã³ãã¬ãŒãã³ã°ã³ãŒã¹ã§äœ¿çšãããŸãã¬ã€ãã¯ãç¹å¥ã«éžæãããæåãèšäºãè³æããããªã®ãã§ãŒã³ã§ããç§ãã¡ã®æç§æžã«ã¯ãã§ã«30以äžã®ãŠããŒã¯ãªè³æããããŸããæ¥ç¶ããŠãã ããïŒ