[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: How to `echo' the core # a bash script is running on?



On 11 Feb 2014, at 04:09, Joel Rees <joel.rees@gmail.com> wrote:

> On Tue, Feb 11, 2014 at 9:03 AM, Chris Davies <chris@roaima.co.uk> wrote:
>> Marco Ippolito <maroloccio@gmail.com> wrote:
>>> How can I `echo', in `bash', the core # the current script is running on?
>> 
>> This will probably do it for you
>>    awk '{print $39}' /proc/$$/stat
>> 
>> See proc(5) for details, including the 39. Please also note that unless
>> you've set the task affinity (see taskset(1) for details) the process
>> can - and will - be reassigned different cores during its lifetime.
> 
> Heh. What odds do you give it that the processor will be running on a
> different core by the time his script has IDed the core? Or maybe even
> cycled back again?
> 
> But, I guess if the OP's purpose is just to prove that scripts are not
> confined to a single core, I guess it doesn't matter. (I can't say
> that I can think of any other reason for the question, now that I
> think of it. Hmm)
> 
> -- 
> Joel Rees
> 
> Be careful where you see conspiracy.
> Look first in your own heart.

Appreciated the discussion, thanks. Yes, I was trying to verify some behaviour, a bit like the following Bash one-liner, but in another context, and `taskset' helped me more than looking at `printf' as an aftermath:

bash4$ f=/tmp/delme; printf '%s\n' '#include <stdio.h>' '#include <sched.h>' 'int main(int argc, const char* argv[]) { printf("job: %s; sched_getcpu(): %d\n", argv[1], sched_getcpu()); return 0; }' | gcc -x c -o "$f" - && parallel -j 0 "$f" {#} -- {1..9}

job: 1; sched_getcpu(): 0
job: 2; sched_getcpu(): 1
job: 3; sched_getcpu(): 1
job: 4; sched_getcpu(): 1
job: 5; sched_getcpu(): 1
job: 6; sched_getcpu(): 1
job: 7; sched_getcpu(): 1
job: 8; sched_getcpu(): 0
job: 9; sched_getcpu(): 1

Printing job IDs, "cpu" numbers, etc.

In the end I just rewrote my "script" in C.


Reply to: