[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] re: [Xen-devel] Xen balloon driver discuss
To build a new balloon driver is much easier than I thought, so I quickly get more results Create domain like: xm cr xxx.hvm maxmem=2048 memory=512 In new the cur_page is 525312(larger than Pod Entry, so after balloon pod_entry == pod_cached well be satisfied), that is 2052M, later I found that this number comes from domain->max_pages. In /local/domain/did/memory/target is 524288, that is 512M Inside guest, from /proc/meminfo, the total memory is 482236KB, that is 470.93M Strange is balloon driver holds memory = 2052 - 512 = 1540M And the guest actually has 470.93M 1540 + 470.93 = 2010.93 < 2048 So I wonder where is the memory goes (2048-2010.93)? Thanks. ----- ----- date: 2010,12,1 13:07 To: 'tinnycloud'; 'George Dunlap' CC: 'Chu Rui'; xen-devel@xxxxxxxxxxxxxxxxxxx; 'Dan Magenheimer' Subject: re: [Xen-devel] Xen balloon driver discuss Hi George: I think I know the problem, it is due to the balloon driver I used it out of date. My Guest kernel is from(ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/, kernel-2.6.18-164.el5.src.rpm, so as the balloon driver ) The problem is at the very beginning, Pod Entry total is different from the current_pages pages in balloon. (at the beginning, both Pod Entry and current_pages shall point to the same value, that is total memory allocated for guest, But in fact, Pod Entry is 523776 < current_pages is 514879 So from Pod aspect, the balloon need to inflate to 523776 - target, but the balloon driver only inflate 514879 -target This is the problem. ) So later I will try to get the balloon.c from xenlinux to build a new driver, to see if solve the problem. Thanks. ----- ----- From: tinnycloud [mailto:tinnycloud@xxxxxxxxxxx] Sent: 2010.11.30 21:59 To: 'George Dunlap' cc: 'Chu Rui'; 'xen-devel@xxxxxxxxxxxxxxxxxxx'; 'Dan Magenheimer' Subject: re: [Xen-devel] Xen balloon driver discuss Thank you for your kindly help. Well, on last mail, you mentioned that balloon will make pod_entries equal to cache_size as soon as it start to work when guest starts up. >From my understanding, if we start guest such as: xm cr xxx.hvm maxmem=2048 memory=512 then, we should set the /local/domain/did/memory/target to 522240 ( ( 512M-2M) * 1204, 2M for VGA in your another patch? ) to tell the balloon driver in guest to inflate, right? And when balloon driver balloon to let guest memory has this target, I think pod_entires will equal to cached_size, right? I did some experiment on this, the result shows different. Step 1. xm cr xxx.hvm maxmem=2048 memory=512 at the very beginning, I printed out domain tot_pages, 1320288, pod.entry_count 523776, that is 2046M, pod.count 130560, that is 512M (XEN) tot_pages 132088 pod_entries 523776 pod_count 130560 currently, /local/domain/did/memory/target in default will be written to 524288 after guest start up, balloon driver will balloon, when finish, I can see pod.entry_count reduce to 23552, pod,count 14063 (XEN) DomPage list too long to display (XEN) Tot pages 132088 PoD entries=23552 cachesize=14063 Step 2. In my understanding, /local/domain/did/memory/target should be at least 510 * 1024 , and then pod_entries will equal to cache_size I use 500, So I did: xm mem-set domain_id 500 then I can see pod.entry_count reduce to 22338, pod,count 15921, still not equal (XEN) Memory pages belonging to domain 4: (XEN) DomPage list too long to display (XEN) Tot pages 132088 PoD entries=22338 cachesize=15921 Step 3. Only after I did : xm mem-set domain_id 470 Pod_entries is equal to pod.count (XEN) DomPage list too long to display (XEN) Tot pages 130825 PoD entries=14677 cachesize=14677 Later from the code, I learnt that those two values are forced to be equal, in 700 out_entry_check: 701 /* If we've reduced our "liabilities" beyond our "assets", free some */ 702 if ( p2md->pod.entry_count < p2md->pod.count ) 703 { 704 p2m_pod_set_cache_target(d, p2md->pod.entry_count); 705 } 706 So in conclude, it looks like something goes wrong, the PoD entries should equal to cachesize(pod.count) as soon as the balloon driver inflate to max - target, right? Many thanks. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |