Programming :: Get Process Running CPU Core And The Utilization On That Core?
Apr 27, 2010
Assume someone bind a particular process to a particular CPU core(In multi core machine) by using sched_setaffinity() like functions. Then how we can get that process running core id and CPU core utilisation of that process on that running CPU core(Pragmatically or by a Linux command)?.
My system has Intel Xeon 4-core cpu(hyperthreading 8-core) and run 64-bit linux. I want to allocate one core for general process(kernel process & other processes). And then, I want to allocate the rest of core for the specific multi-thread program.
Q1: I know that I can pthread_setaffinity() for user-mode thread and mpstat for monitoring. So, how can I allocate a core for kernel process and monitor it?
Q2: How can I restrict use of the cores for the multi-thread program? I don't want kernel process to use the cores for the multi-thread program.
I want to generate core dump files from my program when it crashes. Its a pretty big process and has about 10-11 threads in it.I have followed the documentation to enable core dump by setting ulimit to unlimited etc. I quickly tried "A demo program creating a core dump" from the following webpage, which succeeds in Segfault and dumping a core file in the directory that I configured.However, I tried running my original program and caused it to crash. I did this by making calls to kill(), raise() or the same null pointer access as shown in the webpage above. In each case, my program crashed but did not generate a core dump file. Am I missing something?My program is in C++ and my environment is Redhat 9.0 (kernel 2.4.20)
Going through the "Why do I NOT get a core dump?" section on the same webpage as above, I can see two potential problems. One - there are issues with the suid/sgid (bullet # 6). I am not able to change any settings with suid because my system does not contain either /proc/sys/fs/suid_dumpable or /proc/sys/kernel/suid_dumpableTwo, my program has threads in it and the bullet # 8 is the problem.
I have a command line OCR program called OCR Shop XTR (Vividata corp) that I am using on a system with a 6-core AMD chip. I changed the bios so that the 6-cores were activated, but htop shows me that while the program is running, I am only getting activity on one core (the program maxes out the one core with consistent usage between 97% and 100%).
I have read that many programs are not written to take advantage of multiple core cpu's. However, I am just hoping that there is some way to get this program to take advantage of the extra cores. Does anyone know of a way to invoke programs from the command line which would spread the workload out among additional cores?
Here is the output of uname -a:Linux linux 184.108.40.206-1.2-desktop #1 SMP PREEMPT 2011-02-21 10:34:10 +0100 i686 athlon i386 GNU/LinuxAnd here is the output for one of the cores from cat /proc/cpuinfo:processor : 5
vendor_id : AuthenticAMD cpu family : 16 model : 10 model name : AMD Phenom(tm) II X6 1100T Processor stepping : 0
I have now installed Wheezy on two different hard drives and in each case it seems only one CPU of my dual core CPU computer is recognized. System Monitor, Gkrellm and lscpu show just one when prior to the new install the old Wheezy showed both CPU's. I have put the hard drive into two other computers with dual core CPU's and all show just one CPU.
Interestingly System Profiler and Benchmark (hardinfo?) > Devices > Processors now show a large amount of processor infomation when with the old Wheezy I would only see both CPU's listed and nothing else.
I recently read in a forum that by default the Linux kernel only activates one of two cores in a dual core processor. Searching online gave one option to find out and that was the mpstat command. I therefore ran the command and got the following output.As the result says, it shows only 1 cpu. I was wondering what I could do to activate both cores in my machine, and whether doing so was going to cause me any problems.
I have created a virtual machine of a system running Fedora Core 4 and I need to upgrade it to Fedora Core 10. Based on what I have read, it iis possible so I started theupgrade process. I get an error message saying that /dev/hda6 (my root paritition does not exist) even though it does.
Does the installer need to read a label from /etc/fstab? I executed tune2fs -L / /dev/hda6 amd ,and added LABEL=/ for the corresponding entry for fstab. but the FEDORA CORE 10 is still giving the same problems for the installation process. Should I upgrade to an intermediate verson like Fedora Core 7 first?
I've a program that launches new processes, and wait for them to die before it exits. So, for example, my program is a process, and it launches 3 more processes, and when the 3 child processes end, it will exit.
As you see, at end of the example, the program used a total number of 4 processes.
1 - Now, I'm running this program in a CPU with 4 cores. This means that the program used each core for each process?
How can we run the linux process like tar on multiple core? For example if we want to build the kernel we can use -j4 to distribute process of 4 different core. Is it possible to run long time consuming process on mulitple core?
I`m looking for solution. Is it possible to run process on 1 core in UNIX ? From time to time I must start some very CPU consuming process and unfortunately this process is running on all cores... so at this time working on PC is very hard.
In my program, I fork() to get a child process. Because of some problem, child process terminates by a segmentation fault. Parent process is still running. I have compiled my code with -g option. I have done: ulimit -c unlimited. I am not getting core dump of the child process. How can I get the core dump of child process?
A process from some software I am running keeps crashing with seemingly no real pattern. I ahve tried using ddd/gdb to run the process in question but everytime it crashes no useful information is returned. I also tried getting a core file with the same result. It seems as though according to linux the program has exited normally.
This obviously points towards the process itself having a bug but there are other instances of the same program running on other machines in the network with no problems at all.
I have made comaprisons of hardware/drivers (lspci etc) installed on various machines and all are exactly the same as the machine in question so my question is (at long last): What else should I be looking for?
We have a small cluster of 20 HP systems, all running CentOS 5.3 in an NFS-root environment. Half are quad-socket, quad-core Xeon E7340 @ 2.40GHz (total 16 cores), the other half are 8-socket, quad-core Opteron 8354 (total 32 cores). All systems have a Mellanox Infiniband adapter ("Mellanox Technologies MT25418 [ConnectX VPI PCIe 2.0 2.5GT/s - IB DDR / 10GigE] (rev a0)")
With kernel 2.6.18-128.1.6.el5, infiniband works fine on all systems.
With the update to kernel 2.6.18-164.11.1.el5 (and both types of node running the same NFS-root image), the 16-core Xeons still work fine. Infiniband no longer works on the 32-core Opterons. Specifically, either the ib0 interface fails to appear, or it does appear but when configured with an IP address, doesn't actually work. In either case, loading the IB kernel modules takes a long time, but I haven't instrumented the load script yet to see which module, if any, is at fault. More errors listed below.
However, if I tweak the BIOS of the 32-core systems to reduce the per-socket core count to 2 (so effectively 8-socket, dual-core, down to a total of 16 available cores), Infiniband starts working again. Putting it back to 32-cores makes it fail. Booting the older kernel makes it work again. In summary: old kernel, IB works on all systems. Newer kernel, IB only works on 16-core systems.
Updating the IB firmware from 2.5.0 to 2.7.0 (latest available) doesn't help. I also did a full 'yum update' to make sure that libmlx4, openibd all other associated packages were up-to-date. Doesn't help either.
Some errors that appear on 32-core nodes:
ib_query_port failed (-16) for mlx4_0 ib_query_port failed (-16) for mlx4_0 mlx4_core 0000:04:00.0: SW2HW_MPT failed (-16) mlx4_core 0000:04:00.0: SW2HW_MPT failed (-16)
I have just installed Ubuntu 10.04 on a new Dell. I have an Intel Core 2 Quad processor and I have noticed that one of the cores, sometimes 2, is almost always running at 100%. It is not always the same core and it switches between cores if I use the computer for a while.I searched the forums and came up with some similar problems and tried typing in the command "top" into terminal, but as a relatively new user I don't know what to do with that information.The only one that jumps out at me is that Root says it is using 100% CPU, which I didn't notice on other peoples posts.Also, is it bad for my computer if one of the cores runs so high?
I am using Kernel 220.127.116.11 on an Intel Core2Duo based system.
1) I have to find on which core a particular task is running on . OR 2) I have to just log whenever my task is scheduled on any of the cores with the cpu core number & timestamp info. I am ready to modify the kernel to do printk or some logging . I guess there used to be 2 fields called 'processor' and 'last_processor' in task_struct in older kernels which probably had this information .
So what do I do to find out on which core a particular task is running on ?
Are there any utilities that are simple-to-use and can display the tasks that are running on each of the cores , including the cpu core info ? top , mpstat etc do not tell you on which cpu core a task is running on .
I am running Debian Squeeze 32bit with gnome-core installed. When I alter the acceleration or sensitivity within the pointer speed section of gnome-mouse-properties, my mouse does not act differently. Has anyone else encountered this problem? How can I change my mouse sensitivity? I have installed Debian Lenny previously and I recall that I was capable of changing the sensitivity.
I am in school for my CIS degree and the book I am using this session covers Windows XP and Fedora Core 4. I am having trouble finding & downloading Fedora Core 4. My question is: Is there a big enough difference between Fedora Core 4 and Fedora Core 14 that I would not be able to use 14 instead of 4?