相关疑难解决方法(0)

如何找出使用python的CPU数量

我想知道使用Python的本地机器上的CPU数量.当使用最佳扩展用户空间程序调用时,结果应该是user/real输出time(1).

python system-information

477
推荐指数
12
解决办法
25万
查看次数

多核汇编语言是什么样的?

曾几何时,为了编写x86汇编程序,你会得到一条说明"加载EDX寄存器的值为5","递增EDX"寄存器等的指令.

对于具有4个核心(甚至更多)的现代CPU,在机器代码级别上它看起来就像有4个独立的CPU(即只有4个不同的"EDX"寄存器)?如果是这样,当你说"递增EDX寄存器"时,是什么决定了哪个CPU的EDX寄存器递增?现在x86汇编程序中是否存在"CPU上下文"或"线程"概念?

核心之间的通信/同步如何工作?

如果您正在编写操作系统,那么通过硬件公开哪种机制可以让您在不同的内核上安排执行?这是一些特殊的特权指示吗?

如果您正在为多核CPU编写优化编译器/字节码VM,那么您需要具体了解x86,以使其生成能够在所有内核中高效运行的代码?

对x86机​​器代码进行了哪些更改以支持多核功能?

cpu x86 assembly multicore smp

231
推荐指数
7
解决办法
4万
查看次数

sched_setaffinity()如何工作?

我试图了解linux系统调用sched_setaffinity()的工作原理.这是我在这里提出的问题的后续内容.

我有这个指南,它解释了如何使用系统调用,并有一个非常整洁(工作!)的例子.

所以我下载了Linux 2.6.27.19 内核源代码.

我对包含该系统调用的行进行了'grep',得到了91个结果.没有前途.

最后,我试图了解内核如何为特定内核(或处理器)设置指令指针.

我熟悉单核单线程程序的工作原理.有人可能发出'jmp foo'指令,这基本上将IP设置为'foo'标签的内存地址.但是当一个有多个内核时,必须说"在内存地址foo处获取下一条指令,并设置内核编号2的指令指针以便在那里开始执行."

在汇编代码中,我们指定哪个核心执行该操作?

回到内核代码:这里重要的是什么?文件'kernel/sched.c'有一个名为sched_setaffinity()的函数,但返回类型为"long" - 这与其手册页不一致.那么重要的是什么?这些模块中的哪一个显示了组装说明?什么模块正在读取'task_struct',查看'cpus_allowed'成员,然后将其转换为指令?(我还翻阅了glibc源代码 - 但我认为它只是调用内核代码来完成这项任务.)

c linux kernel multicore system-calls

12
推荐指数
1
解决办法
1万
查看次数

我可以以编程方式选择我的线程应运行的多核CPU的哪个核心?

还是由操作系统控制?我听说谷歌的新Go语言有一个内置的功能,让程序员去那么细致,或者我理解错了?

linux

7
推荐指数
1
解决办法
3989
查看次数

Node.js child_process.fork()在不同的CPU核心上运行

我有一个运行长期执行进程的应用程序.为了使速度更快,我进行简单的数据分片并希望并行运行它们,只需通过.fork()相同应用程序的2个实例.

我在那里有2台核心机器,并希望确保使用2个核心,第一个实例在第一个核心上运行,第二个核心在第二个核心上运行.

我知道cluster模块,但在这种情况下似乎不相关,因为我不需要运行HTTP服务并在它们之间进行负载平衡.只是工人(意思是,他们不需要彼此沟通,发送消息或其他任何东西 - 他们只是做HTTP请求并将数据存储到数据库).

是否有可能控制node.js进程采用哪个CPU内核?如何在Mac/Linux上监控?

fork multiprocessing node.js

7
推荐指数
1
解决办法
1853
查看次数

如何知道我的代码运行在哪个物理处理器和哪个物理核心上

我如何知道在C程序中,我的代码运行在哪个物理处理器和核心上?我正在使用Linux和gcc 4.4.3.

c linux system processor

6
推荐指数
2
解决办法
2651
查看次数

如何防止子分叉进程继承CPU亲和力?

我有一个服务器进程,它会分叉许多子进程.服务器进程与CPU核心具有亲缘关系,但我不希望子进程继承该亲和性(而OS应该处理运行这些进程的位置).有没有办法将父子进程与cpu亲和关系脱钩?

c++ linux fork affinity execvp

6
推荐指数
1
解决办法
2270
查看次数