Re: [gem5-users] [EXT] Accessing logical (software) thread ID in gem5

2019-01-14 Thread Shehab Elsayed
UPDATE:
If I call curTaskPIDFromTaskStruct() instead of curTaskPID() both kernels
give the same error of "panic: vtophys page walk returned fault"



On Mon, Jan 14, 2019 at 12:19 PM Shehab Elsayed 
wrote:

> So, I tried adding this patch to kernels 4.3 and 4.8.13. Both kernels
> compile successfully but then I run into problems in gem5. Here is what
> happens:
>
> 1- Kernel 4.3:
> When curThreadInfo() gets called on a context switch it gives this error
> "panic:curThreadInfo() not implemented for this ISA"
>
> 2- Kernel 4.8.13:
> When curTaskPID() gets called on a context switch it gives this error
> "panic: vtophys page walk returned fault"
>
> Also, I don't think I mentioned this before. I am running full system
> simulation with X86 cores.
>
>
> On Sat, Jan 12, 2019 at 12:17 PM Paul Rosenfeld (prosenfeld) <
> prosenf...@micron.com> wrote:
>
>> You’ll need to build a kernel with the extra annotations. I’m not sure if
>> they are supported in the latest kernels but I know it was supported in
>> v4.3. Here is the commit that adds those symbols:
>> https://github.com/gem5/linux-arm-gem5-legacy/commit/516ba2d255b502b1dad07662bd18110f3bf37b1b
>>
>>
>>
>> *From:* gem5-users [mailto:gem5-users-boun...@gem5.org] *On Behalf Of *Shehab
>> Elsayed
>> *Sent:* Friday, January 11, 2019 10:58 PM
>> *To:* gem5 users mailing list 
>> *Subject:* Re: [gem5-users] [EXT] Accessing logical (software) thread ID
>> in gem5
>>
>>
>>
>> Thank you all for your help. I have been trying to to get what Paul
>> suggested to work, however, I keep running into this problem:
>>
>>
>>
>> warn: Unable to find kernel symbol thread_info_task
>> warn: Kernel not compiled with task_struct info; can't get currently
>> executing task/process/thread name/ids!
>>
>>
>>
>> I am not sure what I need to modify in the kernel in order to get it to
>> work. Any suggestions?
>>
>>
>>
>> On Fri, Jan 11, 2019 at 9:27 AM Paul Rosenfeld (prosenfeld) <
>> prosenf...@micron.com> wrote:
>>
>> You could take the approach previously implemented by ARM, which is to
>> add a few annotations to your kernel that allow you to find the task_info
>> structures in kernel memory and then ask gem5 to hook the kernel process
>> switch function. Each time the kernel context switches on a core, you get a
>> callback into gem5 and you can look up the process info. It’s been a while
>> since I’ve worked on this sort of thing but you might be able to look at
>> this patch for some hints about where to look:
>>
>>
>>
>> https://gem5-review.googlesource.com/c/public/gem5/+/2640
>>
>>
>>
>>
>>
>> Cheeers,
>>
>> Paul
>>
>>
>>
>> *From:* gem5-users [mailto:gem5-users-boun...@gem5.org] *On Behalf Of *Shehab
>> Elsayed
>> *Sent:* Thursday, January 10, 2019 11:53 AM
>> *To:* gem5-users@gem5.org
>> *Subject:* [EXT] [gem5-users] Accessing logical (software) thread ID in
>> gem5
>>
>>
>>
>> Hello All,
>>
>>
>>
>> I was wondering if there is a way to differentiate between different
>> logical (software) threads in gem5. I am trying to collect some stats for
>> each logical thread and so far all I could find in gem5 is access to
>> physical threads. I know that logical threads is the responsibility of the
>> OS but is there anyway for gem5 to access the logical thread ID.
>>
>>
>>
>> One option is to pin threads to cores but this only works if the number
>> of cores is at least equal to the number of logical threads. However, I
>> will need to run some experiments where the number of logical threads
>> exceed the number of cores, in which case, multiple logical threads will be
>> assigned to the same core and in order to differentiate between them I need
>> the logical thread ID.
>>
>>
>>
>> Thank you very much in advance.
>>
>>
>>
>> Best Regards,
>>
>> Shehab
>>
>> ___
>> gem5-users mailing list
>> gem5-users@gem5.org
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>
>> ___
>> gem5-users mailing list
>> gem5-users@gem5.org
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>
>
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] [EXT] Accessing logical (software) thread ID in gem5

2019-01-14 Thread Shehab Elsayed
So, I tried adding this patch to kernels 4.3 and 4.8.13. Both kernels
compile successfully but then I run into problems in gem5. Here is what
happens:

1- Kernel 4.3:
When curThreadInfo() gets called on a context switch it gives this error
"panic:curThreadInfo() not implemented for this ISA"

2- Kernel 4.8.13:
When curTaskPID() gets called on a context switch it gives this error
"panic: vtophys page walk returned fault"

Also, I don't think I mentioned this before. I am running full system
simulation with X86 cores.


On Sat, Jan 12, 2019 at 12:17 PM Paul Rosenfeld (prosenfeld) <
prosenf...@micron.com> wrote:

> You’ll need to build a kernel with the extra annotations. I’m not sure if
> they are supported in the latest kernels but I know it was supported in
> v4.3. Here is the commit that adds those symbols:
> https://github.com/gem5/linux-arm-gem5-legacy/commit/516ba2d255b502b1dad07662bd18110f3bf37b1b
>
>
>
> *From:* gem5-users [mailto:gem5-users-boun...@gem5.org] *On Behalf Of *Shehab
> Elsayed
> *Sent:* Friday, January 11, 2019 10:58 PM
> *To:* gem5 users mailing list 
> *Subject:* Re: [gem5-users] [EXT] Accessing logical (software) thread ID
> in gem5
>
>
>
> Thank you all for your help. I have been trying to to get what Paul
> suggested to work, however, I keep running into this problem:
>
>
>
> warn: Unable to find kernel symbol thread_info_task
> warn: Kernel not compiled with task_struct info; can't get currently
> executing task/process/thread name/ids!
>
>
>
> I am not sure what I need to modify in the kernel in order to get it to
> work. Any suggestions?
>
>
>
> On Fri, Jan 11, 2019 at 9:27 AM Paul Rosenfeld (prosenfeld) <
> prosenf...@micron.com> wrote:
>
> You could take the approach previously implemented by ARM, which is to add
> a few annotations to your kernel that allow you to find the task_info
> structures in kernel memory and then ask gem5 to hook the kernel process
> switch function. Each time the kernel context switches on a core, you get a
> callback into gem5 and you can look up the process info. It’s been a while
> since I’ve worked on this sort of thing but you might be able to look at
> this patch for some hints about where to look:
>
>
>
> https://gem5-review.googlesource.com/c/public/gem5/+/2640
>
>
>
>
>
> Cheeers,
>
> Paul
>
>
>
> *From:* gem5-users [mailto:gem5-users-boun...@gem5.org] *On Behalf Of *Shehab
> Elsayed
> *Sent:* Thursday, January 10, 2019 11:53 AM
> *To:* gem5-users@gem5.org
> *Subject:* [EXT] [gem5-users] Accessing logical (software) thread ID in
> gem5
>
>
>
> Hello All,
>
>
>
> I was wondering if there is a way to differentiate between different
> logical (software) threads in gem5. I am trying to collect some stats for
> each logical thread and so far all I could find in gem5 is access to
> physical threads. I know that logical threads is the responsibility of the
> OS but is there anyway for gem5 to access the logical thread ID.
>
>
>
> One option is to pin threads to cores but this only works if the number of
> cores is at least equal to the number of logical threads. However, I will
> need to run some experiments where the number of logical threads exceed the
> number of cores, in which case, multiple logical threads will be assigned
> to the same core and in order to differentiate between them I need the
> logical thread ID.
>
>
>
> Thank you very much in advance.
>
>
>
> Best Regards,
>
> Shehab
>
> ___
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>
> ___
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] [EXT] Accessing logical (software) thread ID in gem5

2019-01-12 Thread Paul Rosenfeld (prosenfeld)
You’ll need to build a kernel with the extra annotations. I’m not sure if they 
are supported in the latest kernels but I know it was supported in v4.3. Here 
is the commit that adds those symbols: 
https://github.com/gem5/linux-arm-gem5-legacy/commit/516ba2d255b502b1dad07662bd18110f3bf37b1b

From: gem5-users [mailto:gem5-users-boun...@gem5.org] On Behalf Of Shehab 
Elsayed
Sent: Friday, January 11, 2019 10:58 PM
To: gem5 users mailing list 
Subject: Re: [gem5-users] [EXT] Accessing logical (software) thread ID in gem5

Thank you all for your help. I have been trying to to get what Paul suggested 
to work, however, I keep running into this problem:

warn: Unable to find kernel symbol thread_info_task
warn: Kernel not compiled with task_struct info; can't get currently executing 
task/process/thread name/ids!

I am not sure what I need to modify in the kernel in order to get it to work. 
Any suggestions?

On Fri, Jan 11, 2019 at 9:27 AM Paul Rosenfeld (prosenfeld) 
mailto:prosenf...@micron.com>> wrote:
You could take the approach previously implemented by ARM, which is to add a 
few annotations to your kernel that allow you to find the task_info structures 
in kernel memory and then ask gem5 to hook the kernel process switch function. 
Each time the kernel context switches on a core, you get a callback into gem5 
and you can look up the process info. It’s been a while since I’ve worked on 
this sort of thing but you might be able to look at this patch for some hints 
about where to look:

https://gem5-review.googlesource.com/c/public/gem5/+/2640


Cheeers,
Paul

From: gem5-users 
[mailto:gem5-users-boun...@gem5.org<mailto:gem5-users-boun...@gem5.org>] On 
Behalf Of Shehab Elsayed
Sent: Thursday, January 10, 2019 11:53 AM
To: gem5-users@gem5.org<mailto:gem5-users@gem5.org>
Subject: [EXT] [gem5-users] Accessing logical (software) thread ID in gem5

Hello All,

I was wondering if there is a way to differentiate between different logical 
(software) threads in gem5. I am trying to collect some stats for each logical 
thread and so far all I could find in gem5 is access to physical threads. I 
know that logical threads is the responsibility of the OS but is there anyway 
for gem5 to access the logical thread ID.

One option is to pin threads to cores but this only works if the number of 
cores is at least equal to the number of logical threads. However, I will need 
to run some experiments where the number of logical threads exceed the number 
of cores, in which case, multiple logical threads will be assigned to the same 
core and in order to differentiate between them I need the logical thread ID.

Thank you very much in advance.

Best Regards,
Shehab
___
gem5-users mailing list
gem5-users@gem5.org<mailto:gem5-users@gem5.org>
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] [EXT] Accessing logical (software) thread ID in gem5

2019-01-11 Thread Shehab Elsayed
Thank you all for your help. I have been trying to to get what Paul
suggested to work, however, I keep running into this problem:

warn: Unable to find kernel symbol thread_info_task
warn: Kernel not compiled with task_struct info; can't get currently
executing task/process/thread name/ids!

I am not sure what I need to modify in the kernel in order to get it to
work. Any suggestions?

On Fri, Jan 11, 2019 at 9:27 AM Paul Rosenfeld (prosenfeld) <
prosenf...@micron.com> wrote:

> You could take the approach previously implemented by ARM, which is to add
> a few annotations to your kernel that allow you to find the task_info
> structures in kernel memory and then ask gem5 to hook the kernel process
> switch function. Each time the kernel context switches on a core, you get a
> callback into gem5 and you can look up the process info. It’s been a while
> since I’ve worked on this sort of thing but you might be able to look at
> this patch for some hints about where to look:
>
>
>
> https://gem5-review.googlesource.com/c/public/gem5/+/2640
>
>
>
>
>
> Cheeers,
>
> Paul
>
>
>
> *From:* gem5-users [mailto:gem5-users-boun...@gem5.org] *On Behalf Of *Shehab
> Elsayed
> *Sent:* Thursday, January 10, 2019 11:53 AM
> *To:* gem5-users@gem5.org
> *Subject:* [EXT] [gem5-users] Accessing logical (software) thread ID in
> gem5
>
>
>
> Hello All,
>
>
>
> I was wondering if there is a way to differentiate between different
> logical (software) threads in gem5. I am trying to collect some stats for
> each logical thread and so far all I could find in gem5 is access to
> physical threads. I know that logical threads is the responsibility of the
> OS but is there anyway for gem5 to access the logical thread ID.
>
>
>
> One option is to pin threads to cores but this only works if the number of
> cores is at least equal to the number of logical threads. However, I will
> need to run some experiments where the number of logical threads exceed the
> number of cores, in which case, multiple logical threads will be assigned
> to the same core and in order to differentiate between them I need the
> logical thread ID.
>
>
>
> Thank you very much in advance.
>
>
>
> Best Regards,
>
> Shehab
> ___
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] [EXT] Accessing logical (software) thread ID in gem5

2019-01-11 Thread Paul Rosenfeld (prosenfeld)
You could take the approach previously implemented by ARM, which is to add a 
few annotations to your kernel that allow you to find the task_info structures 
in kernel memory and then ask gem5 to hook the kernel process switch function. 
Each time the kernel context switches on a core, you get a callback into gem5 
and you can look up the process info. It’s been a while since I’ve worked on 
this sort of thing but you might be able to look at this patch for some hints 
about where to look:

https://gem5-review.googlesource.com/c/public/gem5/+/2640


Cheeers,
Paul

From: gem5-users [mailto:gem5-users-boun...@gem5.org] On Behalf Of Shehab 
Elsayed
Sent: Thursday, January 10, 2019 11:53 AM
To: gem5-users@gem5.org
Subject: [EXT] [gem5-users] Accessing logical (software) thread ID in gem5

Hello All,

I was wondering if there is a way to differentiate between different logical 
(software) threads in gem5. I am trying to collect some stats for each logical 
thread and so far all I could find in gem5 is access to physical threads. I 
know that logical threads is the responsibility of the OS but is there anyway 
for gem5 to access the logical thread ID.

One option is to pin threads to cores but this only works if the number of 
cores is at least equal to the number of logical threads. However, I will need 
to run some experiments where the number of logical threads exceed the number 
of cores, in which case, multiple logical threads will be assigned to the same 
core and in order to differentiate between them I need the logical thread ID.

Thank you very much in advance.

Best Regards,
Shehab
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users