From: Anton Kachalov <rnouse@google.com>
To: Patrick Williams <patrick@stwcx.xyz>
Cc: Nguyen Chanh <nguyenchanh2201@gmail.com>,
OpenBMC Maillist <openbmc@lists.ozlabs.org>
Subject: Re: [c++] [hwmon] std::ifstream read file with timeout so long
Date: Wed, 7 Oct 2020 21:02:49 +0200 [thread overview]
Message-ID: <CADVsX88d1PU5LomWa3xzGjnJf5OqJmjcCnQsZGfh94oPRXbn+g@mail.gmail.com> (raw)
In-Reply-To: <20201007152428.GJ6152@heinlein>
[-- Attachment #1: Type: text/plain, Size: 2746 bytes --]
Try to strace the process. Either attach strace or modify service file to
run the strace from the beginning.
To attach simply (replace $HWMON_PID with appropriate pid):
# strace -fv -tt -etrace=file -p $HWMON_PID -s 2048 -o /tmp/hwmon.log.$$
You should include "strace" package in the image by either modifying the
build/conf/local.conf and place / append the variable:
======= cut =======
IMAGE_INSTALL_append = " strace"
======= cut =======
Please note the space before the package name. It is required.
To modify service file, simply edit either source file:
https://github.com/openbmc/meta-phosphor/blob/a87fb2d1eb682ed0f04e0f269966b9ae4aafbb1e/recipes-phosphor/sensors/phosphor-hwmon/xyz.openbmc_project.Hwmon%40.service
in your local build tree or edit service file after booting the image using
"vi":
# vi /lib/systemd/system/xyz.openbmc_project.Hwmon\@.service
and change ExecStart param to:
======== cut ========
ExecParam=/usr/bin/strace -tt -etrace=file -fv -s 2048 -o /tmp/hwmon.log.$$
/usr/bin/phosphor-hwmon-readd -o %I
======== cut ========
Then reload systemd and restart the service:
# systemctl daemon-reload
# systemctl restart xyz.openbmc_project.Hwmon\@.service
And then check the /tmp/hwmon.log.* file.
With the "-tt" option you will get a precise timestamp between each syscall.
If there is nothing suspicious, try to remove the "-etrace=file" option.
On Wed, 7 Oct 2020 at 17:25, Patrick Williams <patrick@stwcx.xyz> wrote:
> On Tue, Oct 06, 2020 at 10:42:18PM +0700, Nguyen Chanh wrote:
> > In https://github.com/openbmc/phosphor-hwmon => hwmonio.cpp , I saw we
> use
> > the std::ifstream to open and read a device sensor.
> >
> > But, I met an issue with it. In case the sensor was disabled (Ex: the Fan
> > was unplugged), the std::ifstream read will take a long time . The
> timeout
> > in there is so long. It makes my system have a BIG delay in each checking
> > sensor.
> >
> > Other observation : In case the sensor device is ready, the time for
> sensor
> > reading is expected.
> >
> > Measuring std::ifstream reading:
> >
> > In case unplugged sensor: 91385 microseconds
> > In case plugged sensor. : 507 microseconds
>
> Do you know which device driver it is interacting with? This sounds
> like an issue with the underlying driver. Perhaps it is attempting
> too many retries.
>
> >
> > The patch to measure the std::ifstream reading, please see attachment !
> >
> > Unexpected behavior you saw
> >
> > The timeout in there is so long
> >
> > Expected behavior
> >
> > Do we have any better solution in this case? take less more timeout.
> > [image: Screen Shot 2020-10-03 at 11.32.36 AM.png]
> > --
> > *Nguyen Minh Chanh *
> > *Embedded Software Engineer *
>
>
>
> --
> Patrick Williams
>
[-- Attachment #2: Type: text/html, Size: 4001 bytes --]
prev parent reply other threads:[~2020-10-07 19:05 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-06 15:42 [c++] [hwmon] std::ifstream read file with timeout so long Nguyen Chanh
2020-10-07 15:24 ` Patrick Williams
2020-10-07 19:02 ` Anton Kachalov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CADVsX88d1PU5LomWa3xzGjnJf5OqJmjcCnQsZGfh94oPRXbn+g@mail.gmail.com \
--to=rnouse@google.com \
--cc=nguyenchanh2201@gmail.com \
--cc=openbmc@lists.ozlabs.org \
--cc=patrick@stwcx.xyz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).