From the MallocInternals section of the wiki:
 Âéšç€æ¥è‡ªçº¿ç¨‹ç¢°æ’žçš„åŽ‹åŠ›å¢žåŠ ï¼Œé€šè¿‡mmap创建é¢å¤–的竞技场以å‡è½»åŽ‹åŠ›ã€‚竞技场的数é‡ä¸Šé™æ˜¯ç³»ç»Ÿä¸CPUæ•°é‡çš„å…«å€ï¼ˆé™¤éžç”¨æˆ·å¦æœ‰è¯´æ˜Žï¼Œè¯·å‚è§mallopt),这æ„味ç€çº¿ç¨‹è¾ƒå¤§çš„应用程åºä»ä¼šçœ‹åˆ°ä¸€äº›äº‰ç”¨ï¼Œä½†æƒè¡¡çš„是,会有更少的争用碎片。
ä¸ºä»€ä¹ˆå¢žåŠ ç«žæŠ€åœºçš„æ•°é‡ä¼šå¢žåŠ ç¢Žç‰‡ï¼Ÿæœ‰è¶£çš„æ˜¯ï¼Œé€šè¿‡ä¸¥æ ¼é™åˆ¶å†…å˜ç«žæŠ€åœºåˆ°2(通过MALLOC_ARENA_MAX),我已ç»èƒ½å¤Ÿå°†é©»ç•™é›†å¤§å°ï¼ˆä¸ä»…虚拟集大å°ï¼‰å‡å°‘è¿‘50%。
malloc
ä¸çš„大é‡æ¯çº¿ç¨‹å†…å˜ç«žæŠ€åœºå¦‚何导致内å˜ç¢Žç‰‡åŒ–å¹¶å¢žåŠ RSS?
ç”案 0 :(得分:0)
å‡è®¾ä½ 有300MBçš„åˆ†æ•°ã€‚å¦‚æžœä½ å°†å®ƒåˆ’åˆ†ä¸º8ä¸ªç«žæŠ€åœºï¼Œé‚£ä¹ˆä½ æœ€ç»ˆå°†èŽ·å¾—æ›´å¤šï¼†ï¼ƒ34;赔率和结果"内å˜ï¼Œå®ƒéƒ½ä¸è¶³ä»¥æ»¡è¶³å¤§å†…å˜è¯·æ±‚。作为一项规则,竞技场ä¸ä¼šåŠ¨æ€å¢žé•¿æˆ–缩å°ã€‚å› æ¤ï¼Œå¦‚æžœä½ åˆ†é…一个竞技场,å 用它的90%,最åŽ10%作为碎片(å义上ç‰å¾…æä¾›å°é¢åˆ†é…ï¼‰ï¼Œå®ƒå¯¹ä½ çš„å¤§é‡åˆ†é…没有帮助。
ä½ å°†å®ƒåˆ†æˆæ›´å¤šçš„竞技场,越多"赔率和结æŸï¼†ï¼ƒ34;ä½ è®°å¿†ä¸çš„记忆。所以:更多的竞技场ç‰äºŽæ›´å¤šçš„内部碎片。
ç”案 1 :(得分:-1)
竞技场有一个内部互斥é”,å¯ä»¥åŒæ—¶é”定ä¸åŒçº¿ç¨‹çš„内å˜è®¿é—®ã€‚
å¦‚æžœä½ åªæœ‰ä¸€ä¸ªç«žæŠ€åœºï¼Œä¸€æ¬¡åªå…许一次内å˜æ“作,这会在执行新的分é…/å…费时å‡å°‘碎片。
å¦‚æžœå¢žåŠ ç«žæŠ€åœºçš„æ•°é‡ï¼Œåˆ™æ„味ç€æ‚¨å…许多个线程åŒæ—¶åˆ†é…/释放内å˜ï¼Œè¿™ä¼šäº§ç”Ÿç¢Žç‰‡ï¼Œå› 为它ä¸æ˜¯åŽŸåæ“作(请å‚阅“Malloc算法â€å’Œâ€œå…è´¹â€éƒ¨åˆ†ï¼‰ç®—法“)
8xCPU规则åªæ˜¯ç•™ä¸‹è¶³å¤Ÿçš„线程并å‘但以æŸç§æ–¹å¼é™åˆ¶å®ƒã€‚ 2个竞技场å¯èƒ½ï¼ˆå› 为这ä¸æ˜¯è‡´å‘½ï¼‰å¯¼è‡´æ›´å¤šç¢Žç‰‡è€Œä¸æ˜¯1ï¼Œæ‰€ä»¥ç«žäº‰è¶Šå¤šï¼Œç¢Žç‰‡å°±è¶Šå¤šï¼Œå› ä¸ºæ›´å¤šçš„å†…å˜æ“作åŒæ—¶å‘生。
为什么并å‘内å˜æ“ä½œä¼šå¯¼è‡´ç¢Žç‰‡åŒ–ï¼ˆè¿‡åº¦ç®€åŒ–ï¼‰ï¼šå› ä¸ºåˆ†é…è¿žç»çš„大å—并且全部释放å°å—å—å˜å¾—越æ¥è¶Šéš¾ï¼Œå¹¶æ²¡æœ‰ç•™ä¸‹è¶³å¤Ÿçš„空间æ¥åˆ†é…新的大å—。
å› æ¤ï¼Œå¦‚果您é™åˆ¶ç«žæŠ€åœºçš„æ•°é‡ï¼Œç»´æŠ¤å·¥ä½œï¼ˆåˆ†é…/å…费算法)ä¸ä¼šä¸ŽåŒæ—¶è¿è¡Œçš„其他竞技场竞争。
那么,为什么8xCPU?为什么ä¸åªæ˜¯2ä¸ªç«žæŠ€åœºï¼ˆå¦‚ä½ æµ‹è¯•çš„é‚£æ ·ï¼‰ç”šè‡³åªæœ‰ä¸€ä¸ªï¼Ÿ 这完全å¯ä»¥åªè¿è¡Œ1个竞技场,但这æ„味ç€åªå…许一个线程åŒæ—¶ä½¿ç”¨å†…å˜ï¼Œå› æ¤ä½ 会失去一些性能。如果é™åˆ¶ä¸º2个竞技场,那么åªæœ‰2个线程å¯ä»¥åŒæ—¶ä½¿ç”¨å†…å˜ï¼ˆæ¯ä¸ªç«žæŠ€åœºä¸€ä¸ªï¼‰ã€‚ å¦‚æžœä½ æœ‰ä¸€ä¸ª4-CPU机器åªæœ‰2个竞技场,åªæœ‰2个(这是竞技场é™åˆ¶ï¼‰çº¿ç¨‹å¯ä»¥åŒæ—¶æ“作(通过glibc)内å˜ï¼Œè¿™æ˜¯æµªè´¹èµ„æºï¼Œå› 为åªä½¿ç”¨äº†2个CPU。