URN Logo
UNIX Resources » Linux » China Linux Forum » Linux内核技术 » 第18页 » 请教NUMA的问题
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.com
  LinuxForum General Chat
  Linux Advocacy
  LinuxForum Polls
  Introductions
  Linux Kernel Support
  Patch Management
  Development Release
  Linux Programming
  Linux Security
  Linux Software
  Linux Hardware Problems
    Linux Video Problems
    Linux Sound Problems
  Linux Networking Support
  Linux Printing Support
  Linux Human Interface Devices Support
  Linux Data Storage Support
  Linux Applications Support
  Linux Installation Support
  Linux Laptops Support
  Linux Motherboard, Chipsets, CPU, Memory
  Miscellaneous
  Debian Linux Support
  Ubuntu Linux Support
  LiveCD Discussions
  Gentoo Linux Support
  Mandrake Linux Support
  Redhat / Fedora Linux Support
  Slackware Linux Support
  SuSE Linux Support
  CentOS Linux Support
  Linux Web Servers
  Linux DNS Servers
  Linux Database Servers
  Linux Email Servers
  Linux FTP Servers
  Linux Squid Proxy Server
  Linux Samba Help
  Linux cPanel Help
  Linux Ensim Help
  Linux Plesk Help
  Linux Webmin / Usermin Help
  Qmail Toaster Help
  Linux Games
  Windows Game Emulation
  Linux Discussions
  General Linux Discussions
  Red Hat Linux Discussions
  More Red Hat Linux Discussions
  Mandrake Linux Discussions
  Slackware Linux Discussions
  SuSE Linux Discussions
  Debian Discussions
  Samba Help
  Linux Security
  Linux Networking
  Gentoo Help
  Operating System Rant Forum
  Hardware Rants
   
请教NUMA的问题
请教NUMA的问题 - skyjump [2007-11-20 21:02 | 545 byte(s)]
 
Re: 请教NUMA的问题 - skyjump [2007-11-21 14:42 | 1,251 byte(s)]
 
Subject: 请教NUMA的问题
Author: skyjump    Posted: 2007-11-20 21:02    Length: 545 byte(s)
[Original] [Print] [Top]
大家好, 还是<情景分析>上面的一个问题. 关于NUMA的, 麻烦了.

就是在78页, 如果是NUMA情况下的alloc_pages()函数中,在分配内存时有两个while()循环,对于书上的解释我不是很清楚.书上说:先是从temp开始到队列的末尾,然后回头从第一个节点到最初开始的地方.

我想的是对于一个系统中的pg_data_t都是一个单向的链表吧,它已经全部遍历了一遍了,怎么还要再遍历一遍呢?
那个pgdat_list全局变量应该就是整个pg_data_t链表的首地址吧, 它和之前的NODE_DATA(numa_node_id())返回的地址有什么区别呢? 望指教!
麻烦各位了!
[Original] [Print] [Top]
Subject: Re: 请教NUMA的问题
Author: skyjump    Posted: 2007-11-21 14:42    Length: 1,251 byte(s)
[Original] [Print] [Top]
我是这样想的, 下面为2.4中的代码, 假如说是没有defineCONFIG_NUMA的话, 就是将next,temp,start都指向pgdat_list的首个元素, 此时第二个while()循环中temp!=start为假,所以其不会执行第二个while()循环, 而如果是define了CONFIG_NUMA的话,返回的可能是pgdat_list中间的某个元素的地址,所以此时就是从中间某个元素往后面进行遍历,然后完了之后再从pgdat_list的头元素遍历到NODE_DATA返回的那个元素.

所以实际上也就是遍历了整个链表一次而已.

不知道我这样理解是不是正确的, 望各位指教! 谢谢!

#ifdef CONFIG_NUMA
temp = NODE_DATA(numa_node_id());
#else
spin_lock_irqsave(&node_lock, flags);
if (!next) next = pgdat_list;
temp = next;
next = next->node_next;
spin_unlock_irqrestore(&node_lock, flags);
#endif
start = temp;
while (temp) {
if ((ret = alloc_pages_pgdat(temp, gfp_mask, order)))
return(ret);
temp = temp->node_next;
}
temp = pgdat_list;
while (temp != start) {
if ((ret = alloc_pages_pgdat(temp, gfp_mask, order)))
return(ret);
temp = temp->node_next;
}

[Original] [Print] [Top]
« Previous thread
请教arm汇编,多谢了。
Linux内核技术
18
Next thread »
32位的系统中开启物理地址扩展后的内存映射问题
     

Copyright © 2018 UNIX Resources Network, All Rights Reserved.    About URN | Privacy & Legal | Help | Contact us