* What is _prev_state in sched_switch?
@ 2019-07-24 6:44 Ravindra Kumar Meena
2019-07-24 14:02 ` Sebastien Boisvert
[not found] ` <0e850b02-3fec-a335-3f37-8579ad1b704d@gydle.com>
0 siblings, 2 replies; 8+ messages in thread
From: Ravindra Kumar Meena @ 2019-07-24 6:44 UTC (permalink / raw)
To: lttng-dev
[-- Attachment #1.1: Type: text/plain, Size: 1161 bytes --]
Hi,
I had a looked at TraceCompass example. I came across sched_swithc event in
present in the metadata.
event {
name = "sched_switch";
id = 27;
stream_id = 0;
fields := struct {
integer { size = 8; align = 8; signed = 0; encoding = UTF8; base = 10; }
_prev_comm[16];
integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; }
_prev_tid;
integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; }
_prev_prio;
integer { size = 64; align = 8; signed = 1; encoding = none; base = 10; }
_prev_state;
integer { size = 8; align = 8; signed = 0; encoding = UTF8; base = 10; }
_next_comm[16];
integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; }
_next_tid;
integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; }
_next_prio;
};
};
All event.fields variables are clear to me but what does _prev_state do
here? I had a looked at its babeltrace output but found no pattern in
_prev_state value.
Please attend this email ASAP.
Thanks
--
*Ravindra Kumar Meena*,
B. Tech. Computer Science and Engineering,
Indian Institute of Technology (Indian School of Mines)
<https://www.iitism.ac.in/>, Dhanbad
[-- Attachment #1.2: Type: text/html, Size: 1728 bytes --]
[-- Attachment #2: Type: text/plain, Size: 156 bytes --]
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: What is _prev_state in sched_switch?
2019-07-24 6:44 What is _prev_state in sched_switch? Ravindra Kumar Meena
@ 2019-07-24 14:02 ` Sebastien Boisvert
[not found] ` <0e850b02-3fec-a335-3f37-8579ad1b704d@gydle.com>
1 sibling, 0 replies; 8+ messages in thread
From: Sebastien Boisvert @ 2019-07-24 14:02 UTC (permalink / raw)
To: Ravindra Kumar Meena, lttng-dev
On 2019-07-24 2:44 a.m., Ravindra Kumar Meena wrote:
> Hi,
>
> I had a looked at TraceCompass example. I came across sched_swithc event in present in the metadata.
>
> event {
> name = "sched_switch";
> id = 27;
> stream_id = 0;
> fields := struct {
> integer { size = 8; align = 8; signed = 0; encoding = UTF8; base = 10; } _prev_comm[16];
> integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _prev_tid;
> integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _prev_prio;
> integer { size = 64; align = 8; signed = 1; encoding = none; base = 10; } _prev_state;
> integer { size = 8; align = 8; signed = 0; encoding = UTF8; base = 10; } _next_comm[16];
> integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _next_tid;
> integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _next_prio;
> };
> };
>
> All event.fields variables are clear to me but what does _prev_state do here? I had a looked at its babeltrace output but found no pattern in _prev_state value.
>
> Please attend this email ASAP.
I think that writing "Please attend this email ASAP" is somehow rude.
>
> Thanks
>
> --
> *Ravindra Kumar Meena*,
> B. Tech. Computer Science and Engineering,
> Indian Institute of Technology (Indian School of Mines) <https://www.iitism.ac.in/>, Dhanbad
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev@lists.lttng.org
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: What is _prev_state in sched_switch?
[not found] ` <0e850b02-3fec-a335-3f37-8579ad1b704d@gydle.com>
@ 2019-07-24 14:09 ` Ravindra Kumar Meena
[not found] ` <CAEWVvOSu4vbiDpMCCTHdP59xNaMsAJ74orA52amRaFfoN7jfXQ@mail.gmail.com>
1 sibling, 0 replies; 8+ messages in thread
From: Ravindra Kumar Meena @ 2019-07-24 14:09 UTC (permalink / raw)
To: Sebastien Boisvert; +Cc: lttng-dev
[-- Attachment #1.1: Type: text/plain, Size: 1416 bytes --]
On Wed, Jul 24, 2019, 7:33 PM Sebastien Boisvert <sboisvert@gydle.com>
wrote:
>
>
> On 2019-07-24 2:44 a.m., Ravindra Kumar Meena wrote:
> > Hi,
> >
> > I had a looked at TraceCompass example. I came across sched_swithc event
> in present in the metadata.
> >
> > event {
> > name = "sched_switch";
> > id = 27;
> > stream_id = 0;
> > fields := struct {
> > integer { size = 8; align = 8; signed = 0; encoding = UTF8; base = 10; }
> _prev_comm[16];
> > integer { size = 32; align = 8; signed = 1; encoding = none; base = 10;
> } _prev_tid;
> > integer { size = 32; align = 8; signed = 1; encoding = none; base = 10;
> } _prev_prio;
> > integer { size = 64; align = 8; signed = 1; encoding = none; base = 10;
> } _prev_state;
> > integer { size = 8; align = 8; signed = 0; encoding = UTF8; base = 10; }
> _next_comm[16];
> > integer { size = 32; align = 8; signed = 1; encoding = none; base = 10;
> } _next_tid;
> > integer { size = 32; align = 8; signed = 1; encoding = none; base = 10;
> } _next_prio;
> > };
> > };
> >
> > All event.fields variables are clear to me but what does _prev_state do
> here? I had a looked at its babeltrace output but found no pattern in
> _prev_state value.
> >
> > Please attend this email ASAP.
>
> I think that writing "Please attend this email ASAP" is somehow rude.
>
Okay. Sorry for that. It won't happen again.
I want to know what _prev_state means in sched_switch event.
>
[-- Attachment #1.2: Type: text/html, Size: 2083 bytes --]
[-- Attachment #2: Type: text/plain, Size: 156 bytes --]
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: What is _prev_state in sched_switch?
[not found] ` <CAEWVvOSu4vbiDpMCCTHdP59xNaMsAJ74orA52amRaFfoN7jfXQ@mail.gmail.com>
@ 2019-07-24 14:30 ` Sebastien Boisvert
[not found] ` <18d63d8c-da2d-54c3-3a9a-1d77a5a3a675@gydle.com>
1 sibling, 0 replies; 8+ messages in thread
From: Sebastien Boisvert @ 2019-07-24 14:30 UTC (permalink / raw)
To: Ravindra Kumar Meena; +Cc: lttng-dev
Hello Ravindra,
On 2019-07-24 10:09 a.m., Ravindra Kumar Meena wrote:
>
>
> On Wed, Jul 24, 2019, 7:33 PM Sebastien Boisvert <sboisvert@gydle.com <mailto:sboisvert@gydle.com>> wrote:
>
>
>
> On 2019-07-24 2:44 a.m., Ravindra Kumar Meena wrote:
> > Hi,
> >
> > I had a looked at TraceCompass example. I came across sched_swithc event in present in the metadata.
> >
> > event {
> > name = "sched_switch";
> > id = 27;
> > stream_id = 0;
> > fields := struct {
> > integer { size = 8; align = 8; signed = 0; encoding = UTF8; base = 10; } _prev_comm[16];
> > integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _prev_tid;
> > integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _prev_prio;
> > integer { size = 64; align = 8; signed = 1; encoding = none; base = 10; } _prev_state;
> > integer { size = 8; align = 8; signed = 0; encoding = UTF8; base = 10; } _next_comm[16];
> > integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _next_tid;
> > integer { size = 32; align = 8; signed = 1; encoding = none; base = 10; } _next_prio;
> > };
> > };
> >
> > All event.fields variables are clear to me but what does _prev_state do here? I had a looked at its babeltrace output but found no pattern in _prev_state value.
> >
> > Please attend this email ASAP.
>
> I think that writing "Please attend this email ASAP" is somehow rude.
>
> Okay. Sorry for that. It won't happen again.
>
> I want to know what _prev_state means in sched_switch event.
>
In the Linux kernel, the tracepoint for sched_switch does not have the
field prev_state:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/tracepoint.h?id=52a6e82ac27288f591c750f201de5c3e6ef24385#n465
In lttng-modules, however, there is the field prev_state:
http://git.lttng.org/?p=lttng-modules.git;a=blob;f=instrumentation/events/lttng-module/sched.h;h=77d77b2aeeddbe6ac34e2228b077734721f45b18;hb=4ea9b7c98ade603b08f0d945f4d99bc079eb57b6#l237
My guess would be that prev_state is the previous state of the thread (TID):
in "man ps":
PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process:
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped by job control signal
t stopped by debugger during the tracing
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent
In the Linux kernel:
$ grep "#define TASK_" include/linux/sched.h
#define TASK_RUNNING 0x0000
#define TASK_INTERRUPTIBLE 0x0001
#define TASK_UNINTERRUPTIBLE 0x0002
#define TASK_PARKED 0x0040
#define TASK_DEAD 0x0080
#define TASK_WAKEKILL 0x0100
#define TASK_WAKING 0x0200
#define TASK_NOLOAD 0x0400
#define TASK_NEW 0x0800
#define TASK_STATE_MAX 0x1000
#define TASK_KILLABLE (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE)
#define TASK_STOPPED (TASK_WAKEKILL | __TASK_STOPPED)
#define TASK_TRACED (TASK_WAKEKILL | __TASK_TRACED)
#define TASK_IDLE (TASK_UNINTERRUPTIBLE | TASK_NOLOAD)
#define TASK_NORMAL (TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE)
#define TASK_REPORT (TASK_RUNNING | TASK_INTERRUPTIBLE | \
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: What is _prev_state in sched_switch?
[not found] ` <18d63d8c-da2d-54c3-3a9a-1d77a5a3a675@gydle.com>
@ 2019-07-29 9:07 ` Ravindra Kumar Meena
[not found] ` <CAEWVvORgCQW8ScJZctu7dzT3QaO0PY50qmR-Aov9YHV1GkB+JQ@mail.gmail.com>
1 sibling, 0 replies; 8+ messages in thread
From: Ravindra Kumar Meena @ 2019-07-29 9:07 UTC (permalink / raw)
To: Sebastien Boisvert; +Cc: lttng-dev
[-- Attachment #1.1: Type: text/plain, Size: 3778 bytes --]
>
> > On 2019-07-24 2:44 a.m., Ravindra Kumar Meena wrote:
> > > Hi,
> > >
> > > I had a looked at TraceCompass example. I came across sched_swithc
> event in present in the metadata.
> > >
> > > event {
> > > name = "sched_switch";
> > > id = 27;
> > > stream_id = 0;
> > > fields := struct {
> > > integer { size = 8; align = 8; signed = 0; encoding = UTF8; base =
> 10; } _prev_comm[16];
> > > integer { size = 32; align = 8; signed = 1; encoding = none; base
> = 10; } _prev_tid;
> > > integer { size = 32; align = 8; signed = 1; encoding = none; base
> = 10; } _prev_prio;
> > > integer { size = 64; align = 8; signed = 1; encoding = none; base
> = 10; } _prev_state;
> > > integer { size = 8; align = 8; signed = 0; encoding = UTF8; base =
> 10; } _next_comm[16];
> > > integer { size = 32; align = 8; signed = 1; encoding = none; base
> = 10; } _next_tid;
> > > integer { size = 32; align = 8; signed = 1; encoding = none; base
> = 10; } _next_prio;
> > > };
> > > };
> > >
> > > All event.fields variables are clear to me but what does
> _prev_state do here? I had a looked at its babeltrace output but found no
> pattern in _prev_state value.
>
> In the Linux kernel, the tracepoint for sched_switch does not have the
> field prev_state:
>
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/tracepoint.h?id=52a6e82ac27288f591c750f201de5c3e6ef24385#n465
>
>
> In lttng-modules, however, there is the field prev_state:
>
>
> http://git.lttng.org/?p=lttng-modules.git;a=blob;f=instrumentation/events/lttng-module/sched.h;h=77d77b2aeeddbe6ac34e2228b077734721f45b18;hb=4ea9b7c98ade603b08f0d945f4d99bc079eb57b6#l237
>
>
> My guess would be that prev_state is the previous state of the thread
> (TID):
>
Okay. The above link was somewhat helpful but I still didn't get what is
the meaning of {0, 1, 1026, 4096} values in _prev_state.
In babeltrace output _prev_state have { 0, 1, 1026, 4096 } values.
The example can be found here
https://github.com/tuxology/tracevizlab/blob/master/labs/TraceCompassTutorialTraces.tgz
At folder "102-tracing-wget-critical-path/wget-first-call" babeltrace gives
following output.
babeltrace . | grep sched_switch
[21:20:44.207247650] (+0.000000799) arnaud-desktop sched_switch: { cpu_id =
3 }, { prev_comm = "swapper/3", prev_tid = 0, prev_prio = 20, prev_state =
0, next_comm = "kworker/u8:2", next_tid = 8363, next_prio = 20 }
[21:20:44.207252919] (+0.000000085) arnaud-desktop sched_switch: { cpu_id =
3 }, { prev_comm = "kworker/u8:2", prev_tid = 8363, prev_prio = 20,
prev_state = 1026, next_comm = "swapper/3", next_tid = 0, next_prio = 20 }
[21:20:44.207253370] (+0.000000143) arnaud-desktop sched_switch: { cpu_id =
0 }, { prev_comm = "code", prev_tid = 3876, prev_prio = 20, prev_state = 0,
next_comm = "code", next_tid = 4140, next_prio = 20 }
[21:20:44.207257279] (+0.000000656) arnaud-desktop sched_switch: { cpu_id =
3 }, { prev_comm = "swapper/3", prev_tid = 0, prev_prio = 20, prev_state =
0, next_comm = "kworker/u8:2", next_tid = 8363, next_prio = 20 }
[21:20:44.207258485] (+0.000000903) arnaud-desktop sched_switch: { cpu_id =
3 }, { prev_comm = "kworker/u8:2", prev_tid = 8363, prev_prio = 20,
prev_state = 1026, next_comm = "swapper/3", next_tid = 0, next_prio = 20 }
[21:20:44.207270164] (+0.000000081) arnaud-desktop sched_switch: { cpu_id =
3 }, { prev_comm = "swapper/3", prev_tid = 0, prev_prio = 20, prev_state =
0, next_comm = "kworker/u8:2", next_tid = 8363, next_prio = 20 }
P.S: This is not a full babeltrace output.
--
*Ravindra Kumar Meena*,
B. Tech. Computer Science and Engineering,
Indian Institute of Technology (Indian School of Mines)
<https://www.iitism.ac.in/>, Dhanbad
[-- Attachment #1.2: Type: text/html, Size: 5428 bytes --]
[-- Attachment #2: Type: text/plain, Size: 156 bytes --]
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: What is _prev_state in sched_switch?
[not found] ` <CAAS9doZ1AjBiVCPOZUPBZYVZ11hRohP5g9pmAU+pPU=EQo120Q@mail.gmail.com>
@ 2019-07-29 9:53 ` Christophe Bédard
0 siblings, 0 replies; 8+ messages in thread
From: Christophe Bédard @ 2019-07-29 9:53 UTC (permalink / raw)
Cc: lttng-dev
[-- Attachment #1.1: Type: text/plain, Size: 1692 bytes --]
Hi,
Re-sending since I previously used an email address not subscribed to the
ML.
On Mon, 29 Jul 2019 at 11:08, Ravindra Kumar Meena <rmeena840@gmail.com>
wrote:
> Okay. The above link was somewhat helpful but I still didn't get what is
> the meaning of {0, 1, 1026, 4096} values in _prev_state.
>
> In babeltrace output _prev_state have { 0, 1, 1026, 4096 } values.
>
>
I think the answer to your question was in Sebastien's email.
$ grep "#define TASK_" include/linux/sched.h
> #define TASK_RUNNING 0x0000
> #define TASK_INTERRUPTIBLE 0x0001
> #define TASK_UNINTERRUPTIBLE 0x0002
> #define TASK_PARKED 0x0040
> #define TASK_DEAD 0x0080
> #define TASK_WAKEKILL 0x0100
> #define TASK_WAKING 0x0200
> #define TASK_NOLOAD 0x0400
> #define TASK_NEW 0x0800
> #define TASK_STATE_MAX 0x1000
> #define TASK_KILLABLE (TASK_WAKEKILL |
> TASK_UNINTERRUPTIBLE)
> #define TASK_STOPPED (TASK_WAKEKILL | __TASK_STOPPED)
> #define TASK_TRACED (TASK_WAKEKILL | __TASK_TRACED)
> #define TASK_IDLE (TASK_UNINTERRUPTIBLE |
> TASK_NOLOAD)
> #define TASK_NORMAL (TASK_INTERRUPTIBLE |
> TASK_UNINTERRUPTIBLE)
> #define TASK_REPORT (TASK_RUNNING | TASK_INTERRUPTIBLE
> | \
>
States can be combined (OR'd).
1026 in decimal is 0x402 which is 0x400 | 0x002. That is TASK_NOLOAD |
TASK_UNINTERRUPTIBLE, or, as defined above, it's simply TASK_IDLE.
I'm not sure what other answer you're expecting.
Christophe
[-- Attachment #1.2: Type: text/html, Size: 3006 bytes --]
[-- Attachment #2: Type: text/plain, Size: 156 bytes --]
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: What is _prev_state in sched_switch?
[not found] ` <CAEWVvORgCQW8ScJZctu7dzT3QaO0PY50qmR-Aov9YHV1GkB+JQ@mail.gmail.com>
[not found] ` <CAAS9doZ1AjBiVCPOZUPBZYVZ11hRohP5g9pmAU+pPU=EQo120Q@mail.gmail.com>
@ 2019-07-29 15:08 ` Sebastien Boisvert
[not found] ` <aa931b19-0a14-8659-aa9a-13e7f6523465@gydle.com>
2 siblings, 0 replies; 8+ messages in thread
From: Sebastien Boisvert @ 2019-07-29 15:08 UTC (permalink / raw)
To: Ravindra Kumar Meena; +Cc: lttng-dev
On 2019-07-29 5:07 a.m., Ravindra Kumar Meena wrote:
> Okay. The above link was somewhat helpful but I still didn't get what is the meaning of {0, 1, 1026, 4096} values in _prev_state.
>
Christophe explained, the values of _prev_state.
In addition, I suggest you read those links (from general to specific):
- https://en.wikipedia.org/wiki/Finite-state_machine
- https://en.wikipedia.org/wiki/Scheduling_(computing)
- https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: What is _prev_state in sched_switch?
[not found] ` <aa931b19-0a14-8659-aa9a-13e7f6523465@gydle.com>
@ 2019-07-31 6:48 ` Ravindra Kumar Meena
0 siblings, 0 replies; 8+ messages in thread
From: Ravindra Kumar Meena @ 2019-07-31 6:48 UTC (permalink / raw)
To: Sebastien Boisvert; +Cc: lttng-dev
[-- Attachment #1.1: Type: text/plain, Size: 567 bytes --]
>
> Christophe explained, the values of _prev_state.
>
> In addition, I suggest you read those links (from general to specific):
>
> - https://en.wikipedia.org/wiki/Finite-state_machine
> - https://en.wikipedia.org/wiki/Scheduling_(computing)
> - https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt
Thanks, Christophe and Sebastien for helping me out. This resolved
the problem.
--
*Ravindra Kumar Meena*,
B. Tech. Computer Science and Engineering,
Indian Institute of Technology (Indian School of Mines)
<https://www.iitism.ac.in/>, Dhanbad
[-- Attachment #1.2: Type: text/html, Size: 1436 bytes --]
[-- Attachment #2: Type: text/plain, Size: 156 bytes --]
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-07-31 6:49 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-24 6:44 What is _prev_state in sched_switch? Ravindra Kumar Meena
2019-07-24 14:02 ` Sebastien Boisvert
[not found] ` <0e850b02-3fec-a335-3f37-8579ad1b704d@gydle.com>
2019-07-24 14:09 ` Ravindra Kumar Meena
[not found] ` <CAEWVvOSu4vbiDpMCCTHdP59xNaMsAJ74orA52amRaFfoN7jfXQ@mail.gmail.com>
2019-07-24 14:30 ` Sebastien Boisvert
[not found] ` <18d63d8c-da2d-54c3-3a9a-1d77a5a3a675@gydle.com>
2019-07-29 9:07 ` Ravindra Kumar Meena
[not found] ` <CAEWVvORgCQW8ScJZctu7dzT3QaO0PY50qmR-Aov9YHV1GkB+JQ@mail.gmail.com>
[not found] ` <CAAS9doZ1AjBiVCPOZUPBZYVZ11hRohP5g9pmAU+pPU=EQo120Q@mail.gmail.com>
2019-07-29 9:53 ` Christophe Bédard
2019-07-29 15:08 ` Sebastien Boisvert
[not found] ` <aa931b19-0a14-8659-aa9a-13e7f6523465@gydle.com>
2019-07-31 6:48 ` Ravindra Kumar Meena
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).