Sponsored Content
Operating Systems Solaris Assign a process to a core on start Post 302910728 by achenle on Sunday 27th of July 2014 06:17:28 PM
Old 07-27-2014
I do wonder what problem is being solved here. Binding to processors is almost never worthwhile. It might get you somewhat better performance for a memory-latency-bound application on a NUMA machine where you can guarantee your application uses memory with better locality to the processor(s) you bind to, but that's about it.

If you're grasping that hard for every last processor cycle, how much time have you spent profiling your application and improving its performance directly based on profiled performance data?
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

how to start a process and make it sleep for 5 mins and then kill that process

how to start a process and make it sleep for 5 mins and then kill that process (6 Replies)
Discussion started by: shrao
6 Replies

2. UNIX for Dummies Questions & Answers

Getting core id, physical id of running process

Hi All, I need a help. I need to know: 1. the individual core id, physical id of a running process on multicore inside a program. The system file /proc/cpuinfo shows all the ids of all the processes. But I need to know runtime, what exact core id and physical id , the running process has.... (0 Replies)
Discussion started by: debrajde
0 Replies

3. Solaris

coreadm diasble a process from core dumping

Hello All Is it possible to disable a specific process from core dumping ? In my environment I have 2 bespoke application processes which needs to be stopped from core dumping but any other process should be allowed to core dump. If I do : coreadm -d process it will stop all per processes... (3 Replies)
Discussion started by: baner_n
3 Replies

4. UNIX for Dummies Questions & Answers

How to force core dump of a process

We have an application that terminates with segmentation violation errors in the logs. No source code is available since this is a third party software that is way past its maintenance life cycle. Under these circumstances is there a way to force a core dump of the process for further analysis?? ... (3 Replies)
Discussion started by: Un1xNewb1e
3 Replies

5. Shell Programming and Scripting

Script - How to automatically start another process when the previous process ends?

Hi all, I'm doing automation task for my team and I just started to learn unix scripting so please shed some light on how to do this: 1) I have 2 sets of datafiles - datafile A and B. These datafiles must be loaded subsequently and cannot be loaded concurrently. 2) So I loaded datafile A... (10 Replies)
Discussion started by: luna_soleil
10 Replies

6. Programming

how to monitor the child process on which cpu core

Hi all. Sorry to express my questions wrongly in my early post,I repost my question again here. My pc has dual core, I wirte an application with two process, parents process and child process. My quetion is how to realize :if the child process is on core 0,it will tell me I'm on core 0,if it... (1 Reply)
Discussion started by: yanglei_fage
1 Replies

7. UNIX for Dummies Questions & Answers

Script to start background process and then kill process

What I need to learn is how to use a script that launches background processes, and then kills those processes as needed. The script successfully launches the script. But how do I check to see if the job exists before I kill it? I know my problem is mostly failure to understand parameter... (4 Replies)
Discussion started by: holocene
4 Replies

8. Red Hat

Process does not dump any core files when crashed even if coredumpsize is unlimited

Hello Im using redhat and try to debug my application , its crashes and in strace I also see it has problems , but I can't see any core dump I configured all the limit ( im using .cshrc ) and it looks like this : cputime unlimited filesize unlimited datasize unlimited... (8 Replies)
Discussion started by: umen
8 Replies

9. Shell Programming and Scripting

Get the process/thread running on which core

I use top -H -p 1256 to show process 1256, and then press "f" then press "j" to display it is running on which core, is there a better mothed, I want to be automated to get this (1 Reply)
Discussion started by: yanglei_fage
1 Replies

10. Red Hat

Core Dump of a process in Red Hat Linux 5.9

Hello All, I am new joiner of this forum.I am new to Linux shell scripting. At present I have identified 1 application which stalls very frequently (PID is say xyz) and I am not having much information in its application log to identify the root cause of stalling. I need to take the core dump... (19 Replies)
Discussion started by: Anjan Ganguly
19 Replies
pthread_processor_bind_np(3T)											     pthread_processor_bind_np(3T)

NAME
pthread_processor_bind_np(), pthread_num_processors_np(), pthread_processor_id_np(), pthread_num_ldoms_np(), pthread_num_ldomprocs_np(), pthread_spu_to_ldom_np(), pthread_ldom_bind_np(), pthread_ldom_id_np(), pthread_pset_bind_np() - determine how many processors are avail- able, bind threads to processors, and determine processor IDs; determine how many locality domains are available, bind threads to locality domains, and determine locality domain IDs; change thread's processor set binding SYNOPSIS
PARAMETERS
request This parameter determines the precise action to be taken by these functions. answer This parameter is an output parameter in which values are returned. The meaning of answer depends on request parameter. spu This parameter gives the value of the spu for certain requests. ldom This parameter gives the value of the locality domain for certain requests. tid This parameter gives the value of the thread id for certain requests. pset This parameter gives the value of the processor set for certain requests. REMARKS
Much of the functionality of this capability is highly dependent on the underlying hardware. An application that uses these functions should not be expected to be portable across architectures or implementations. Some hardware platforms support online addition and deletion of processors. Due to this capability, processors and locality domains may be added or deleted while the system is running. Applications should be written to handle processor IDs and locality domain IDs that dynami- cally appear or disappear (for example, sometime after obtaining the IDs of all the processors in the system an application may try to bind a thread to one of those processors - these functions will return an error if that processor had been deleted). Processor and locality domain IDs are not guaranteed to exist in numerical order. There may be holes in a sequential list of IDs. Due to the capability of online addition and deletion of processors on some platforms, processor and locality domain IDs obtained via these inter- faces may be invalid at a later time. Likewise, the number of processors and locality domains in the system may also change due to proces- sors being added or deleted. Processor sets restrict application execution to a designated group of processors. These functions return information about processors and locality domains available to the calling application. Refer to mpctl(2) for system-wide topology information. DESCRIPTION
These functions provide a means of determining how many processors and locality domains are available to the applications and assigning threads to run on specific processors or locality domains. A locality domain consists of a related collection of processors, memory, and peripheral resources that comprise a fundamental building block of the system. All processors and peripheral devices in a given locality domain have equal latency to the memory contained within that locality domain. Processor sets furnish an alternative application scheduling allocation domain. A processor set comprises an isolated group of processors for exclusive use by applications assigned to the processor set. (See pset_create(2) for details). Use with name to see if the processor set functionality is enabled and available on the system. Topology Information The function returns the number of processors in the processor set of the calling thread. The function returns the number of locality domains in the processor set of the calling thread. The function returns the number of processors contributed by the locality domain ldom to the processor set of the calling thread. It may be less than the total number of processors in the ldom. The number of processors is returned in the answer parameter. The function obtains the processor ID of a specific processor on the system. The processor ID is returned in answer. The request parameter determines the precise action to be taken and is one of the following: This request stores in the answer parameter the ID of the first processor in the processor set of the calling thread. The spu argument is ignored. This request stores in the answer parameter the ID of the next processor in the processor set of the calling thread after spu. Typically, is called to determine the first spu. is then called in a loop (until the call returns to determine the IDs of the remaining spus. This request stores in the answer parameter the ID of the processor the thread is currently running on. The spu argument is ignored. Note: This option returns the current processor on which the caller is executing, NOT the processor assignment of the caller. This information may be out-of-date arbitrarily soon after the call completes due to the scheduler context switching the caller onto another processor. The function obtains the locality domain ID of a specific locality domain on the system. The locality domain ID is returned in answer. The request parameter determines the precise action to be taken and is one of the following: This request stores in the answer parameter the ID of the first locality domain in the processor set of the calling thread. The ldom argument is ignored. This request stores in the answer parameter the ID of the next locality domain in the processor set of the calling thread after ldom. Typically, is called to determine the first ldom. is then called in a loop (until the call returns to determine the IDs of the remaining ldoms. The function returns the ID of the locality domain containing the processor specified by spu. The locality domain ID is returned in ldom. Processor Set Binding All threads have binding or association to a processor set, and they execute on processors within that set. The function allows a thread to change its binding to another processor set. The thread needs EXEC permission to bind to another processor set (See pset_bind(2) for details). The thread's contention scope must be to change a thread's processor set binding. The thread specified by tid is the target thread whose binding is changed. The pset parameter specifies the new processor set for tid. The new processor set for the thread is returned in answer. The tid can be used to refer to the calling thread. The pset can be used to read the current processor set assignment for the thread. Processor Binding Processor binding is expected to be used to increase performance in certain applications to prevent cache thrashing or to cause threads to execute in parallel on different processors. It should not be used to ensure correctness of an application. Specifically, cooperating threads should not rely on processor assignment in lieu of a synchronization mechanism (such as mutexes). Processor binding and locality domain binding is mutually exclusive - only one can be in effect at any time. If locality domain binding is in effect, the target is allowed to execute on any processor within that locality domain. Due to the capability of online addition and deletion of processors on some platforms, processors may go away. If this occurs, any threads bound to a departing processor will be rebound to a different processor with the same binding type. The function binds a thread to a specific processor. The thread specified by tid is the target thread whose binding is changed. The spu parameter specifies the new processor binding for tid. The request parameter determines the precise action to be taken and is one of the following: This call is advisory. This request assigns thread tid to processor spu. The new processor assignment is returned in answer. The tid can be used to refer to the calling thread. The spu may be passed to read the current assignment. The spu may be used to break any specific processor assignment and allow the implementation to choose which processor the thread should execute on when it is scheduled to execute. This allows the thread to run on any processor the implementation chooses. This request is only advisory. If the scheduling policy for the thread conflicts with this processor assignment, the schedul- ing policy shall overrule the processor assignment. For example, when a processor is ready to choose another thread to exe- cute, if the highest priority thread on the run queue is bound to a different processor, that thread will execute on the available processor rather than waiting for the processor to which it is bound. This request is identical to except that this thread to processor binding will over rule the scheduling policy. For example, when a processor is ready to choose another thread to execute, if the highest priority thread on the run queue is bound to a different processor, that thread will not be chosen by the available processor. That thread will wait until the wanted processor becomes available. The available processor will choose a lower priority thread to execute instead of completely honoring the scheduling policies. Note: binding a thread to a specific processor essentially changes the scheduling allocation domain size for that thread to be one. Having a thread float and be scheduled on whatever processor the system chooses sets a thread's scheduling allocation domain size to a value greater than one (it will generally be equal to the number of processors on the system). Locality Domain Binding Locality domain binding is expected to be used to increase performance in certain applications to prevent cache thrashing or to cause threads to execute in parallel on different processors. It should not be used to ensure correctness of an application. Specifically, coop- erating threads should not rely on locality domain assignment in lieu of a synchronization mechanism (such as mutexes). Processor binding and locality domain binding is mutually exclusive - only one can be in effect at any time. If locality domain binding is in effect, the target is allowed to execute on any processor within that locality domain. Due to the capability of online addition and deletion of processors on some platforms, locality domains may go away. If the last processor in a locality domain is removed, any threads bound to a departing locality domain will be rebound to a different locality domain. The function binds a thread to a specific locality domain. The new locality domain binding is returned in answer. The thread specified by tid is the target thread whose binding is changed. The value can be used to refer to the calling thread. The ldom parameter specifies the new locality domain binding for tid. The value may be passed to only read the current assignment. The value may be passed to break any specific locality domain assignment and allow the implementation to choose which locality domain the thread should execute in. This allows the thread to run on any processor the implementation chooses. Otherwise, ldom specifies the ID of the locality domain to which tid should be bound to. The locality domain binding will take precedence over the scheduling policy. For example, when a processor is ready to choose another thread to execute, if the highest priority thread on the run queue is bound to a different locality domain, that thread will not be chosen by the available processor. That thread will wait until a processor in the wanted locality domain becomes available. The available proces- sor will choose a lower priority thread to execute instead of completely honoring the scheduling policies. RETURN VALUE
always returns the number of processors on the system. It never fails. always returns the number of locality domains on the system. It never fails. Upon successful completion, and return zero. Otherwise, an error number is returned to indicate the error (the variable is not set). Note: In some cases, and may return a negative value, other than -1, in the field which still indicates a successful return. Refer to mpctl(2) for the definition of the returned value. ERRORS
If any of the following occur, the and functions return the corresponding error number: The request parameter contains an illegal value. The spu or ldom parameter contains an invalid ID. The request parameter is and spu identifies the last processor. The request parameter is and ldom identifies the last locality domain. The value specified by answer is illegal. No thread could be found in the current process that matches the thread ID specified in tid. request is or spu is not and the caller does not have the appropriate permission to change a threads binding to a specific processor. The function is and thread tid does not have necessary permission to bind to the pset. AUTHOR
and were developed by HP. SEE ALSO
sleep(3C), rtsched(2), mpctl(2), pset_create(2), pset_bind(2), sysconf(2). STANDARDS CONFORMANCE
Pthread Library pthread_processor_bind_np(3T)
All times are GMT -4. The time now is 10:31 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy