ããã¯ãèšäºãMemC3ïŒDumber Caching and Smarter Hashingã䜿çšããã³ã³ãã¯ãã§åæã®MemCacheãã®ã¬ãã¥ãŒã®ç¿»èš³ã§ãã ãããã¯ãŒã¯åãããã·ã¹ãã ã®èšèšãšå®è£ ã«é¢ãã第10åUSENIXã·ã³ããžãŠã ïŒNSDI'13ïŒã®è°äºé²ã pdfã¯ãã¡ã
DudesïŒå GoogleãCarnegie Mellon Universityã®ç·ãIntel Labsã®å¥ã®ç·ïŒã¯ãMemcachedäºæã®ãã£ãã·ã¥ãæ¹è¯ãïŒå®éãmemekeshãè¿œå ããã°ããã§ãïŒãããã©ãŒãã³ã¹ã®çµæãåªããŠããŸãã ããã°ãThe morning paperãã§ã®ãã®èšäºã®ã¬ãã¥ãŒ-ã¢ã«ãŽãªãºã ã®èª¬æãªã©ãæ¬åœã«æ°ã«å ¥ããŸããã
æäœ-翻蚳è ãšããŠã®ç§ã®ã³ã¡ã³ãã
MemC3ã¯ãéåžžã®memcashãšã¯ç°ãªãããã·ã¥ã¢ã«ãŽãªãºã -楜芳çãªãã«ãã³ãŠãããã·ã¥ïŒã«ãã³ãŠïŒãšãããã«å ããŠç¹å¥ãªãCLOCKãããªãšã³ãã·ã§ã³ã¢ã«ãŽãªãºã ã«åºã¥ããŠããŸãã äžç·ã«æ¥ç¶ãããšãéåžžã®Memcachedãšæ¯èŒããŠãã¡ã¢ãªã®å¹ççãªäœ¿çšãæ倧30ïŒ
åäžãã1ç§ãããã®ã¯ãšãªããã©ãŒãã³ã¹ãæ倧3åã«ãªããŸãïŒFacebookã®memekesã«å
žåçãªå°ããªãªããžã§ã¯ãã®èªã¿åããå€ãè² è·ã®äžã§ïŒã
å
ã®èšäºã®æåŸã«ãé©çšãããæé©åã®å¯äžã«é¢ããŠåŸãããçµæã®åªããåæããããŸãã 次ã®ããã«ãªããŸãã
ã¹ã¬ããã®æ°ã«å¿ããå®å
šãªåž¯åå¹
ïŒãããã¯ãŒã¯çµç±ïŒ
ãã®åæã§ã¯ãåçŽã«ã¢ã«ãŽãªãºã ãšãmemcacheãžã®åã蟌ã¿ã®è©³çŽ°ãšããã©ãŒãã³ã¹ãã¹ãææ³ã確èªããŸããå ã®èšäºããèªã¿ãã ããã
ã«ãã³ãŠããã·ã¥
æåã«ãéåžžã®ã«ãã³ãŠããã·ã¥ãç解ããŸãããã éåžžã®ããã·ã¥ããŒãã«ã¯ã©ã®ããã«æ©èœããŸããïŒ ããŒãååŸãããã®ããã·ã¥ã«ãã£ãŠãæ¿å ¥ããããŒãŸãã¯ããŒã«å¯Ÿå¿ããå€ãèŠã€ããããšãã§ããããŒãã«ã»ã«ïŒãã±ãããŸãã¯ãã±ãã:)ãéžæããŸãã ã¯ããã³ã°ããã·ã¥ã¯2ã€ã®ããã·ã¥é¢æ°ã䜿çšããŸã;å€ãæ¿å ¥ãŸãã¯æ€çŽ¢ããå¯èœæ§ã®ããã»ã«ã¯2ã€ãããŸãã
次ã®è¡šãæ€èšããŠãã ãããåè¡ã¯ã»ã«ãè¡šããåã»ã«ã«ã¯4ã€ã®ããŒã¿ã¹ãããããããŸãã ã¹ãããã¯ãããŒã¿èªäœããªããžã§ã¯ããããŒãšå€ã®ãã¢ãžã®ãã€ã³ã¿ãŒã§ãã
æ€çŽ¢ããããŒãããããã2ã€ã®ããã·ã¥ãã«ãŠã³ããã2ã€ã®å¯èœãªã»ã«ãååŸããŸãã ã€ãŸãã2ã€ã®ã»ã«Ã4ã¹ããã= 8ã¹ãããããã§ãã¯ããŠãç®çã®ããŒãèŠã€ãããã©ããã確èªããå¿
èŠããããŸãã
ã€ãŸãããã®ãããªããã·ã¥ããŒãã«ãæ€çŽ¢ããå Žåããéåžžã®ãããã·ã¥ããŒãã«ãšæ¯èŒããŠå€ãã®æäœãå¿
èŠã§ãã
ã«ãã³ãŠããã·ã¥ã¯ã貌ãä»ãæäœã®åŠçæ¹æ³ã®ããã«ãã®ååãåŸãŸããã æåã«ãäž¡æ¹ã®ããã·ã¥é¢æ°ã䜿çšããŠæ¿å
¥ããããŒXãããã·ã¥ãã2ã€ã®å¯èœãªã»ã«ãååŸããŸãã ãããã®ã»ã«ã®ããããã«ç©ºã®ã¹ããããããå Žåã Xãããã«ä¿åããŸãã ãã¹ãŠã®ã¹ããããããžãŒã®å Žåã¯ãããã€ãã®ããŒã移åããæéã§ãã ãããã®2ã€ã®ã»ã«ã®ããããã§1ã€ã®ã¹ããããã©ã³ãã ã«éžæããããããããŒã移åïŒãŸãã¯ãåé
眮ãïŒããŠïŒ XãåŒã³åºããŠïŒã Xãæžã蟌ãããã®ã¹ããŒã¹ã解æŸããŸãã 2ã€ã®ããã·ã¥é¢æ°ã§æ¢ã«Yãããã·ã¥ãã2çªç®ã®ã»ã«ãèŠã€ããŠãããã«Yãæ¿å
¥ããããšããŸãã ãã®ã»ã«ã®ãã¹ãŠã®ã¹ãããããã£ã±ãã«ãªã£ãŠããå Žåã¯ããããã®ã¹ãããããæ¢ã«ããŒã移åããŠYã®ã¹ããŒã¹ã空ãã空ã®ã¹ããããèŠã€ãããŸã§ïŒãŸãã¯ãç¹å®ã®æ倧移åæ°ãããšãã°500ã«éãããŸã§ïŒç§»åãç¶ããŸãã
ããã§ã¯ãã¢ã«ãŽãªãºã ã¯ã«ãã³ãŠã®ããã«åäœããŸã-ãã§ã«äœ¿çšãããŠããå Žæããå€éšããŒãåŒãåºããç¬èªã®ããŒããã®äžã«å
¥ããŸãã
ããã§ã空ãã¹ããããèŠã€ãããªãå Žåã¯ããã®ããã·ã¥ããŒãã«ãæ¡åŒµããå²ãåœãŠãããã¡ã¢ãªãå¢ãããŸãã
ãã®ãããªæ¿å ¥ã¢ã«ãŽãªãºã ã§ã¯ãã·ãŒã±ã³ã¹å šäœãäžé£ã®åäœã®å®è¡ãå¿ èŠã«ãªãããã§ãããããã·ã¥ããã£ãã·ã¥ããããã®æ¿å ¥æäœã®æéã®è€éãã®æšå®å€ã¯OïŒ1ïŒã§ãã
ãªãªãžãã«äœåããã®åŒçš
ã¿ã°ã䜿çšããŠæ€çŽ¢æäœãæ¹åãã
äžèšãããå€ãã®éèŠãªãµã³ãã«ãšå€ãã®æ¯èŒããããããããã¹ãŠãããŒã¿ã®å±ææ§ã®èŠ³ç¹ããããŸãè¯ããªãããšã¯æããã§ãã ïŒã©ããããèè ã¯ãããŒãããŒã®ããã·ã¥ãããŒãã«ã»ã«ã®ã¹ãããã«çŽæ¥æ ŒçŽããããå¥ã ã«å²ãåœãŠãããããŒå€æ§é ã«æ ŒçŽããããããã¡ã¢ãªããã®ã©ã³ãã ã¢ã¯ã»ã¹ãšããŒã®å®å šãªæ¯èŒãå€æ°ããããšãæå³ããŸãããã»ããµãã£ãã·ã¥ãé©åã«æ©èœãããããšãã§ããŸãïŒ Cookieããã·ã¥ãæé©åããããã«æåã«ããããšã¯ãã¿ã°ãå°å ¥ããããšã§ããã ã¿ã°ã¯ããŒã®1ãã€ãã®ããã·ã¥å€ã§ãããããŒãžã®ãã€ã³ã¿ãŒã®é£ã®ããã·ã¥ããŒãã«ã¹ãããã«çŽæ¥æ ŒçŽããŸãã ãã®ãããªã¿ã°ã䜿çšãããšããã€ã³ã¿ãŒã§ååŸããŠå®å šã«æ¯èŒããããšãªããä¿åãããããŒãæ€çŽ¢ããŒãšäžèŽãããã©ãããéåžžã«ãã°ããïŒ1ãã€ããæ¯èŒããã ãã§ïŒç解ã§ããŸãã
åãã¿ã°ãæã€2ã€ã®ç°ãªãããŒã«å¯ŸããŠäœåãªæœåºãçºçããå¯èœæ§ããããããããŒãå®å šã«æœåºããŠæ¯èŒããæ¢ããŠããããŒãšäžèŽããããšã確èªããå¿ èŠããããŸãã ã·ã³ã°ã«ãã€ãã¿ã°ã®å Žåãè¡çªé »åºŠã¯1/2 ^ 8 = 0.39ïŒ ã«ãªããŸãã 8ã€ã®ã¹ãããåè£ãã¹ãŠããã§ãã¯ããå ŽåïŒããšãã°ãèŠã€ãããªãããŒãæ€çŽ¢ããå Žå-ãã¹ïŒãå¹³å8Ã0.39ïŒ = 0.03ãã€ã³ã¿ãŒã®éåç §ãçºçããŸãã åã»ã«ã¯ããã»ããµã®ããã»ããµãã£ãã·ã¥ã®1ã€ã®ãããã¯ïŒéåžž64ãã€ãïŒã«é 眮ããããããåæ€çŽ¢ã§ã¯2ã€ã®ãããã¯ãèªã¿åã£ãŠ2ã€ã®ã»ã«ããã§ãã¯ããã ãã§ãªããããŒæ€çŽ¢ãèŠã€ãããªãå Žåã®ãã€ã³ã¿ãŒã®éåç §-miss'eãŸãã¯1.03æ€çŽ¢ãæåããå Žå-ãããã
ãªãªãžãã«äœåããã®åŒçš
ã¿ã°ã䜿çšããŠè²Œãä»ãæäœãæ¹åãã
ããŒã«2ã€ã®å¯èœãªã»ã«ãå®çŸ©ããå Žåã2ã€ã®ããã·ã¥é¢æ°ã䜿çšãã代ããã«ã1ã€ã®ããã·ã¥ãšè¿œå ã®ã¿ã°ã®ã¿ã䜿çšããŸãïŒlet cell_1 = hashïŒXïŒããããŠtagïŒXïŒã次ã«cell_2 = cell_1âtagïŒ XïŒã ãã®æ§é ã«ã¯æ¬¡ã®äŸ¿å©ãªããããã£ããããŸããã¿ã°ãšcell_2ãç¥ã£ãŠããcell_1ãå®çŸ©ã§ããŸãã ã€ãŸããããŒã®ç§»åæäœäžãããŒãã©ã®ã»ã«ã«ãã£ããã¯é¢ä¿ãããŸãããå®å šãªããŒã«ã¢ã¯ã»ã¹ããã«ä»£æ¿ã»ã«ãèšç®ã§ããŸãã
ã¢ã¯ã»ã¹ã®åæå®è¡æ§ãµããŒã
ç§ãã¡ã®ç¥ãéããããã·ã¥ã¹ããŒã ã¯äžŠåã¢ã¯ã»ã¹ïŒãã«ããªãŒããŒãã·ã³ã°ã«ã©ã€ã¿ãŒïŒããµããŒãããæåã®å®è£ ã§ãããé«ãã¡ã¢ãªå¹çãåããŠããŸãïŒããŒãã«ã90ïŒ ãè¶ ããå Žåã§ãïŒã
ãªãªãžãã«äœåããã®åŒçš
ãã®ãããªã¢ã«ãŽãªãºã ã«äžŠåæ§ãè¿œå ããã«ã¯ã2ã€ã®åé¡ã解決ããå¿ èŠããããŸãã
- ã©ã®ã»ã«ãæäœã®åœ±é¿ãåããããäºåã«ç¥ãããšãã§ããªããããèšé²ã®ããã«ã»ã«ãããã¯ããéã«ç¥ç¶ã®ããã¯ãé¿ãã
- 誀ã£ããã£ãã·ã¥ãã¹ãé¿ããããã移åäžã«ããŒã1ã€ã®ã»ã«ããæ¢ã«åé€ãããŠããããæ°ããã»ã«ã«ãŸã æ¿å ¥ãããŠãããããã®æç¹ã§èªã¿åããè¡ãããå Žåã
ãã¡ãããå³å¯ã«èšãã°ãèè
ã¯æåã®åé¡ã解決ãããäžåºŠã«èšé²æäœã1ã€ããå®è¡ã§ããªããããåçŽã«æ¡ç¹ããŸããã å®éã®æ¡ä»¶äžã§ã¯ãèªã¿èŸŒã¿ãè² è·ãããã¡ã€ã«ãæ¯é
ããããšãå€ããããããã¯åŠ¥åœãªåŠ¥åæ¡ã§ãã
ãã£ãã·ã¥ãã¹ïŒåœé°æ§ã®å¿çïŒã¯ãæåã«Cookieã®ç§»åã®å®å
šãªãã§ãŒã³ãå®çŸ©ããäœã移åããã«ãæåŸã®ç©ºã®ã¹ãããããç®çã®å
ã®æ¿å
¥ãŸã§éã®é åºã§ãããã®ç§»åãå®è¡ããããšã§åé¿ã§ããŸãã æžã蟌ã¿æäœã1ã€ã®ã¹ããªãŒã ã§è¡ããããšããäºå®ãšçµã¿åãããŠãåã
ã®äº€æã¯è¿œå ã®åããåŒãèµ·ãããªãããšãä¿èšŒããããã§ãŒã³å
šäœãäºåã«ãããã¯ããããšãªãå®è¡ã§ããããšãããããŸãã
æãç°¡åãªå®è£ ã¯ã亀æã«é¢ä¿ãã2ã€ã®ã»ã«ã®ãããããããã¯ãïŒé åºãæ éã«ïŒã亀æåŸã«ããã¯ã解é€ããããšã§ãã ããã§ã¯ã亀æããšã«2ã€ã®ããã¯/ãªãªãŒã¹ãå¿ èŠã§ãã
æãäžè¬çãªçšéã«åãããŠããã©ãŒãã³ã¹ãæé©åããããšãè©Šã¿ããã¹ãŠã®æ¿å ¥ãšã«ãã¯ã¢ãããå°ããªãªãŒããŒãããã§é 次æäœã®1ã€ã®ã¹ããªãŒã ã«æ§ç¯ããããã«ã1ã€ã®èšé²ã¹ã¬ããã®ã¿ã®ååšãå©çšããŸããã ã»ã«ãããã¯ãã代ããã«ãåããŒã§ããŒãžã§ã³ã«ãŠã³ã¿ãŒãéå§ããŸãã æ¿å ¥äžã«ããŒã移åãããšãã«ã«ãŠã³ã¿ãŒãå¢ãããåæ移åã®æ€åºã®ããã«ã«ãã¯ã¢ããäžã«ããŒãžã§ã³ã®å€æŽãç£èŠããŸãã
ãªãªãžãã«äœåããã®åŒçš
ãããããããã®ã«ãŠã³ã¿ãŒã¯ã©ãã«ä¿åããŸããïŒ ããããåããŒå€ãªããžã§ã¯ãã«è¿œå ãããšãäœåãã®ããŒã§å€ãã®ã¡ã¢ãªã䜿çšãããŸãã ãããã®ããŒãšå€ã®ãªããžã§ã¯ãã¯ããã·ã¥ããŒãã«èªäœã®å€éšã«æ ŒçŽãããããã¯ã«ãã£ãŠä¿è·ãããªãããã競åç¶æ ãçºçããå¯èœæ§ããããŸãã
解決çã¯ãåºå®ãµã€ãºã®ã«ãŠã³ã¿ãŒã®é åã䜿çšããããšã§ã-ããŒã®æ°ããã¯ããã«å°ããã§ãã 8192åã®ã«ãŠã³ã¿ãŒã®é åã32KBãã£ãã·ã¥ã«åå²ãããåã«ãŠã³ã¿ãŒã¯å€ãå人ã§ããããã·ã¥ã®äœ¿çšã«ãããããã€ãã®ããŒã«äœ¿çšãããŸãã ãã®ãããªåŠ¥åããã®ãããªå ±æã«ãŠã³ã¿ãŒã®äœ¿çšã¯ããäœåãªåè©Šè¡ãã®å¯èœæ§ãç¶æããªãããããçšåºŠã®ã¢ã¯ã»ã¹äžŠååãäŸç¶ãšããŠæäŸããŸãïŒããŒãžã§ã³ã«ãŠã³ã¿ãŒããŒãã«ã§ããã·ã¥ã®è¡çªãããä»ã®ããŒã«å¯ŸããŠããŒãžã§ã³ã«ãŠã³ã¿ãŒã1å¢å ããŸããïŒãçŽ0.01ïŒ ã
ãããã®ã«ãŠã³ã¿ãŒã¯ã次ã®ããã«äžè¬çãªã¢ã«ãŽãªãºã ã«å»ãŸããŠããŸãã
- ããŒã移åããå¿ èŠãããå Žåãæ¿å ¥ããã»ã¹ã¯ãã®ããŒã®ã«ãŠã³ã¿ãŒããŒãžã§ã³ã1ã€å¢ãããŠã移åã®ããã»ã¹ã瀺ããŸãã ããŒã移åããåŸãã«ãŠã³ã¿ãŒã¯åã³1å¢å ããŸãã ã«ãŠã³ãã¯ãŒãããéå§ãããããã«ãŠã³ã¿ãŒã®å¥æ°å€ã¯ããã¯ãããããŒã«å¯Ÿå¿ããå¶æ°-ããã¯è§£é€ãããŸãã
- ã«ãŠã³ã¿ãŒã§å¥æ°ã®å€ãæ€åºããæ€çŽ¢ããã»ã¹ã¯ãåŸ æ©ããŠããåè©Šè¡ããŸãã ã«ãŠã³ã¿ãŒãå¶æ°ã®å Žåããã®å€ãèŠããŠãäž¡æ¹ã®ã»ã«ãã«ãŠã³ãããŠãããã«ãŠã³ã¿ãŒå€ãä¿åãããŠããå€ãšæ¯èŒããå¿ èŠããããŸãã ã«ãŠã³ã¿ãŒå€ãå€æŽãããå Žåã¯ãæäœãå床繰ãè¿ãå¿ èŠããããŸãã
ãã£ãã·ã³ã°ããã·ã¥ãæé©åããããã®è¿œå ã®ããªãã¯ã¯ãããã€ãã®å¯èœãªæ¿å ¥ãã¹ã䞊è¡ããŠæ€çŽ¢ããããšã§ãã ããã«ããã空ã®ã¹ãããããã°ããèŠã€ããå¯èœæ§ãé«ããªããŸãã ãã¹ãã«ãããšã2ã€ã®å¯èœãªãã¹ã䞊è¡ããŠãã§ãã¯ããããšãæé©ã§ããããšãå€æããŸããã
æèšã®äº€æ
ãããŸã§ãæ¿å ¥ãšæ€çŽ¢ã«ã€ããŠèª¬æããŠããŸããã æé©åãããCookieããã·ã¥ãã¡ã¢ãªãéåžžã«å¹ççã«äœ¿çšããŸããããã£ãã·ã¥ãéçãŸã§ïŒãŸãã¯ã»ãŒéçãŸã§ïŒæºæ¯ã«ãªãããšãäºæ³ããããããæ··éãå¿é ããå¿ èŠããããŸãã
éåžžã®Memcachedã§ã¯ãæããã䜿çšãããããŒïŒLRUïŒãã¯ã©ãŠãã¢ãŠãããããªã·ãŒã䜿çšãããŸãããLRUé ã§å³å¯ã«å®å šã«ã¯ã©ãŠãã¢ãŠãããã«ã¯ãããŒããšã«18ãã€ãïŒ2ã€ã®ãã€ã³ã¿ãŒãš2ãã€ãã®åç §ã«ãŠã³ã¿ãŒïŒãå¿ èŠã§ãã ãŸããããªãã®åæãªãŒããŒããããçºçããŸãã
å¯Ÿç §çã«ãMemC3ã¯ããŒããšã«1ãããã®ã¿ã䜿çšããæäœã䞊ååããæ©èœãåããŠããŸãã ããã¯ãå³å¯ãªLRUãæŸæ£ããŠãããããã®CLRUããŒã¹ã®LRUã¢ã«ãŽãªãºã ãæ¡çšããããšã§å®çŸãããŸãã
ã¿ãŒã²ããã±ãŒã¹ã§ã¯å°ããªãªããžã§ã¯ããåªå¢ã§ãããããLRUã«è¿ãæŒãåºãã䜿çšãããšãã¡ã¢ãªäœ¿çšéãåæžããããã£ãã·ã¥ã«ããå€ãã®ã¬ã³ãŒããä¿åã§ããããã«ãªããå šäœçãªãããçãåäžããŸãã ã»ã¯ã·ã§ã³5ã«ç€ºãããã«ããã®ãããªæŒãåºãå¶åŸ¡ã«ãããåŸæ¥ã®Memcachedã«æ¯ã¹ãŠã¹ã«ãŒãããã3åãã10åã«å¢å ãããã¹ãŠãæé«ã®ããããšãªããŸãã
ãªãªãžãã«äœåããã®åŒçš
åšæçãªããããããã¡ãšããããã¡å ã®ç¹å®ã®å Žæãæãä»®æ³ã®æéãæ³åããŠãã ããã
åãããã¯ãããŒãšå€ã®ãã¢ã®ãªããžã§ã¯ãã®ã幎霢ãïŒäœ¿çšå¹Žéœ¢ïŒãè¡šããŸãã 察å¿ããããŒãæè¿äœ¿çšãããå Žåããããã¯ã1ãããã以å€ã®å Žåã¯ã0ãã§ãã ããŒæäœã¯ãåã«å¯Ÿå¿ããåŠæ¹ããããã1ãã«èšå®ããã ãã§ãã æ··ã¿åããšãã¯ãæèšã®éãæããããã確èªããå¿ èŠããããŸãã ã0ãã®å Žåã察å¿ããããŒããã£ãã·ã¥ããããã·ã¥ã§ããŸãã ã1ãã®å Žåãããã«ã0ããæžã蟌ã¿ãæèšã®éã次ã®ãããã«é²ããŸãã ãã®ããã»ã¹ã¯ããŒãããããèŠã€ãããŸã§ç¹°ãè¿ãããŸãã
ãã£ã¹ãã¬ã€ã¹ã¡ã³ãããã»ã¹ã¯ã次ã®ããã«æ¥œèŠ³çããããã³ã°ã¹ããŒã ãšçµ±åãããŠããŸãã
ããªãšã³ãã·ã§ã³ããã»ã¹ãCLOCKã¢ã«ãŽãªãºã ã䜿çšããŠè¢«å®³è ããŒXãéžæãããšãæåã«ããŒXã®ã«ãŠã³ã¿ãŒããŒãžã§ã³ãã€ã³ã¯ãªã¡ã³ãããçŸåšXãèªã¿åã£ãŠããä»ã®ã¹ã¬ããã«åŸã§åè©Šè¡ããå¿ èŠãããããšãäŒããŸãã 次ã«ã Xãåé€ããä»ã®ã¹ã¬ããããã®åè©Šè¡ãå«ããåŸç¶ã®èªã¿åãã«ã¢ã¯ã»ã¹ã§ããªãããã«ããŸãã æåŸã«ãããŒXã®ã«ãŠã³ã¿ãŒããŒãžã§ã³ãå床ã€ã³ã¯ãªã¡ã³ãããŠãå€æŽãµã€ã¯ã«ãå®äºããŸãã ãã¹ãŠã®ããªãšã³ãã·ã§ã³ãšæ¿å ¥ã¯ããã¯ã䜿çšããŠã·ãªã¢ã«åããããããã«ãŠã³ã¿ãŒãæŽæ°ãããšãã«äºãã«åœ±é¿ãäžããªãããšã«æ³šæããŠãã ããã
ãªãªãžãã«äœåããã®åŒçš
ããã ãã§ã ç§ãšåãããã«æ¥œããã§ããã ããã§ããããã
okmeter.ioã®ãªã¿ã¯ããã°ã賌èªãã