
ãĸãŦã¯ãĩãŗããŧãģãĸãŦã¯ãˇãŧã¨ãīŧ 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ãĢé常ãĢčåŗãããå ´åã¯ã夿šãĢįŽãéããĻãåŽŗã¯ãããžããã
ãĒãŗãŠã¤ãŗãĒãŊãŧãšãŽæīŧ
į§ãĢã¯ããšãĻããããžãã
ããŽãŦããŧãã¯ãéĢč˛ čˇãˇãšãã HighLoad ++ãŽéįēč
ãŽäŧč°ã§čĄãããæéĢãŽãšããŧããŽ1ã¤ãŽčģĸåã§ã ã HighLoad ++ 2017ãĢãŗããĄãŦãŗãšãŽ1ãææĒæēãæŽããžãã
į§ããĄã¯ãã§ãĢäŧč°ããã°ãŠã ãæēåããĻãããįžå¨ãšãąã¸ãĨãŧãĢãįŠæĨĩįãĢåŊĸæãããĻããžãã
äģåš´ãã Right Handles ããŋã°ãĢã¤ããĻå ąåããžãã
ãžããããããŽčŗæãŽä¸é¨ã¯ãéĢč˛ čˇãˇãšãã HighLoadãŽéįēãĢéĸãããĒãŗãŠã¤ãŗããŦãŧããŗã°ãŗãŧãšã§äŊŋį¨ãããžããŦã¤ãã¯ãįšåĨãĢ鏿ãããæåãč¨äēãčŗæããããĒãŽãã§ãŧãŗã§ããį§ããĄãŽæį§æ¸ãĢã¯ãã§ãĢ30äģĨä¸ãŽãĻããŧã¯ãĒčŗæããããžããæĨįļããĻãã ããīŧ