[LITMUS^RT] recording start real-time task
Glenn Elliott
gelliott at cs.unc.edu
Tue Apr 22 18:41:24 CEST 2014
On Apr 22, 2014, at 12:05 PM, Mac Mollison <mollison at cs.unc.edu> wrote:
> I can't answer your specific question, but I do want to raise a separate
> issue.
>
> I am the former maintainer of unit-trace and stopped maintaining
> it when I switched to working on a non-Litmus project.
>
> My understanding is that there are now better tools available to do the
> same thing that actually are being maintained. Perhaps someone in the
> know can comment on these tools and their availability? I thought there
> was some tool that uses KernelShark.
>
> In fact, I see some relevant code here, though I couldn't find any
> documentation about this on the LITMUS wiki:
> https://github.com/LITMUS-RT/rt-kernelshark
>
> If that is not a good option for some reason, perhaps we should look at
> reviving unit-trace. Since it appers to have users who are suffering
> from its lack of maintenance.
>
> Another (probably better) option would be to just make a new tool.
>
> I have found that visualizing scheduler traces by creating an SVG file
> (which has HTML-like syntax) makes writing these tools trivial in
> comparison to the way we did it for unit-trace.
>
> I have such a tool for my userspace work and forking it to draw LITMUS
> schedules would be a very easy project for someone who understands
> the LITMUS trace format. The code is all in Python and it's only 379
> lines.
>
> - Mac
>
> On Tue, 22 Apr 2014 16:50:48 +0200
> Thijs Raets <thijsraets at gmail.com> wrote:
>
>> Hi,
>>
>> The sys_release wasn't recognized by unit trace, I had to add the
>> sys_release type a second time in the array of the unit-trace script
>> since the type number was 11. I can record the task set release now
>> but I have a new problem now. This is my output:
>>
>>
>> .
>> .
>> .
>>
>> Event ID: 7
>> Job: 0.0
>> Type: sys_release2
>> Time: 672784686695748
>>
>> Event ID: 8
>> Job: 6904.1
>> Type: resume
>> Time: 672784686702656
>>
>> Event ID: 9
>> Job: 6904.2
>> Type: release
>> Time: 672784686705186
>>
>> Event ID: 10
>> Job: 6904.2
>> Type: switch_to
>> Time: 672784686727392
>>
>> Event ID: 11
>> Job: 6904.3
>> Type: switch_away
>> Time: 672784686731107
>>
>> Event ID: 12
>> Job: 6904.3
>> Type: completion
>> Time: 672784686736223
>>
>> Event ID: 13
>> Job: 6904.4
>> Type: release
>> Time: 672785686000000
>>
>> Rtspin has a period of 100ms. The resume of job 1 is ignored I only
>> look at release and completion. Job 2 is released but had no
>> completion(no worries I want soft real-time results). Job 3 only has
>> completion time. The real problem for me is the time difference
>> between the release of job 4 and job 2. It's nowhere near 200ms the
>> other jobs are released just fine, but they are all shifted because
>> of job 4 releasing late.(This problem only occurs when using
>> synchronous release)
>>
>> Any ideas?
>>
>> Thanks,
>> Thijs
>>
>>
>>
>>
>> 2014-04-17 12:48 GMT+02:00 Thijs Raets <thijsraets at gmail.com>:
>>
>>> Hi,
>>>
>>> That was exactly what I was looking for thank you! Is it possible
>>> that this sys_release event appears as type "resume" in my
>>> unit-trace output?
>>>
>>> Kind regards,
>>> Thijs
>>>
>>>
>>> 2014-04-17 0:15 GMT+02:00 Glenn Elliott <gelliott at cs.unc.edu>:
>>>
>>> Hi Thijs,
>>>>
>>>> Are you using synchronous releases? (The ‘-w’ option for
>>>> rtspin.) With ‘-w’, rtspin will block until the user execute’s
>>>> liblitmus’s ‘release_ts’ (“release task set”). Task set release
>>>> records a timestamped ’sys_release’ event in sched_trace. You can
>>>> then discard any releases/completions that occur before the
>>>> sys_release timestamp. I believe this will happen naturally if
>>>> you tell unit-trace to discard the first job of every task with
>>>> “-s 1”.
>>>>
>>>> The “experiment-scripts” package (
>>>> https://github.com/LITMUS-RT/experiment-scripts) can also be used
>>>> to analyze traces. However, it also requires you to use its
>>>> framework to set up experiments (this can take some time if you
>>>> need to do something out of the ordinary). The tool currently
>>>> only gives you information on job deadline misses, tardiness, and
>>>> the amount of time tasks send blocked. However, it’s fairly easy
>>>> to extend parse/sched.py to do other forms of analysis, such as
>>>> job response time.
>>>>
>>>> -Glenn
>>>>
>>>>
>>>> On Apr 16, 2014, at 12:14 PM, Thijs Raets <thijsraets at gmail.com>
>>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I'm using feather trace to monitor the rtspin task. I parsed
>>>> the .bin file with unit-trace and thus extracted release and
>>>> completion. The problem is that I also would like to record the
>>>> time at which I give the order to execute the rtspin task. I need
>>>> this time to calculate the theoretical deadlines of the different
>>>> jobs since the release time of the first job could have been
>>>> postponed. I however do not know how time is registered within
>>>> feather trace. I would like to use the same reference to record
>>>> the start time. Where do I look?
>>>>
>>>> Thanks in advance,
>>>>
>>>> Thijs
Adding more to what Mac has said, rt-kernelshark is good for visualizing traces. kernelshark is a tool designed for Linux that we extend for visualizing Litmus traces. Owing to it’s Linux support, rt-kernelshark can give you a lot more information on what is going on within the Linux kernel than unit-trace’s visualization tool.
More information about the litmus-dev
mailing list