Thx for your local try :)

However, I still have this issue. So I have manage to provide more info

First of all, I got below on a VirtualBox (but this happens in my real
hardware, which is a dell desktop)

[root@08-00-27-a9-9a-26 ~]# uname -v
joyent_20140501T225642Z
[root@08-00-27-a9-9a-26 ~]# time rmformat -l
Looking for devices...
     1. Logical Node: /dev/rdsk/c0t1d0p0
        Physical Node: /pci@0,0/pci8086,2829@d/cdrom@1,0
        Connected Device: VBOX     CD-ROM           1.0
        Device Type: DVD Reader
        Bus: <Unknown>
        Size: 679.7 MB
        Label: <None>
        Access permissions: <Unknown>

real    1m0.143s
user    0m0.006s
sys     0m0.024s

You can see that 1m real time. Actually, the results before the Label line
populates out first, then after 1m, Label and access lines appear.

I have done some dtrace stuff (but I am not a dtrace expert :)), the script
is

[root@08-00-27-a9-9a-26 /opt]# cat r.d
syscall:::entry
/pid == $target/
{
  self->t = timestamp;
}

syscall:::return
/self->t/
{
  @systime[execname, probefunc] = sum(timestamp - self->t);
  self->t = 0;
}

dtrace:::END
{
  printa("%15s %15s %@15u\n", @systime);
}

And the results are:

[root@08-00-27-a9-9a-26 /opt]# dtrace -s r.d -c "rmformat -l"
dtrace: script 'r.d' matched 465 probes
Looking for devices...
     1. Logical Node: /dev/rdsk/c0t1d0p0
        Physical Node: /pci@0,0/pci8086,2829@d/cdrom@1,0
        Connected Device: VBOX     CD-ROM           1.0
        Device Type: DVD Reader
        Bus: <Unknown>
        Size: 679.7 MB
        Label: <None>
        Access permissions: <Unknown>
dtrace: pid 62472 has exited
CPU     ID                    FUNCTION:NAME
  0      2                             :END        rmformat
labelsys            1953
       rmformat      setcontext            2342
       rmformat      sigpending            2610
       rmformat         privsys            2736
       rmformat       getrlimit            3048
       rmformat            zone            3458
       rmformat          getuid            3852
       rmformat           gtime            3905
       rmformat           uname            4287
       rmformat          getpid            4856
       rmformat        readlink            4922
       rmformat       sysconfig            6722
       rmformat          sysi86            7311
       rmformat         lstat64            7379
       rmformat          llseek           10993
       rmformat           fcntl           13843
       rmformat           chdir           19534
       rmformat         fstat64           24672
       rmformat        schedctl           25876
       rmformat          getcwd           27494
       rmformat             brk           30545
       rmformat          openat           42381
       rmformat         memcntl           48134
       rmformat            mmap           52093
       rmformat     resolvepath           65762
       rmformat      getdents64           67369
       rmformat lwp_cond_broadcast           91472
       rmformat          munmap           92840
       rmformat           fstat          114936
       rmformat            read          134970
       rmformat          open64          157031
       rmformat          putmsg          191423
       rmformat           write          193405
       rmformat          stat64          226050
       rmformat         mmapobj          326062
       rmformat           close          384007
       rmformat            open          513954
       rmformat     lwp_sigmask          551511
       rmformat          getmsg        12365946
       rmformat           ioctl        53940501
       rmformat         pollsys     60016272302

So the obvious thing is that pollsys use too much time. And I believe that
it is just retry and sleep for sth. So this may be more complex than I
think (or even it is not in the rmformat side, it should only do simple
things.)

To reproduce the situation, I believe you can just use
smartos_20140501T225642Z.iso to boot the system in a VirtualBox VM.

I will also try to use your smartos version for a try, may be this issue is
gone while nobody notice it (except me :)).

On Sat, May 31, 2014 at 2:23 AM, Keith Wesolowski <
[email protected]> wrote:

> On Fri, May 30, 2014 at 04:29:52PM +0800, Yu Li wrote:
>
> > Sorry for such a delay. Anyway I have managed to populate the truss log
> >
> > the interesting part is as follows
> >
> > getpid()                                        = 10843 [10842]
> > fstat(7, 0x08046868)                            = 0
> > ioctl(7, I_STR, 0x080469B0)                     = 0
> > time()                                          = 1401438253
> > fstat(7, 0x080468E8)                            = 0
> > putmsg(7, 0x08046A04, 0x08046AD4, 0)            = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000) (sleeping...)
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000)  = 0
> > fstat(7, 0x080468E8)                            = 0
> > putmsg(7, 0x08046A04, 0x08046AD4, 0)            = 0
> >
> > pollsys(0x080A4A24, 1, 0x08046A38, 0x00000000) (sleeping...)
> >
> > (...and this continues to previous one)
> >
> > I suspect that this is just sth wrong in reading my usb's bus info, and
> > have to retry to many times?
>
> What is being polled here?  You can either use DTrace to look at this in
> more detail or use the debugger to see what's in the poll structure.
> Then use pfiles so see what that refers to.
>
> This is probably going to be a lot easier with DTrace; I'd start with
> something simple like looking at the kernel stacks at the time we go off
> CPU, which will tell us what the poll is actually waiting on (which is
> what we want to know anyway).
>
> Since it would be easier to debug this myself, I tried it here locally,
> but could not reproduce the behaviour you are seeing:
>
> [root@headnode (sf-3) ~]# uname -v
> joyent_20140519T165600Z
> [root@headnode (sf-3) ~]# time rmformat -l
> Looking for devices...
>      1. Logical Node: /dev/rdsk/c16t0d0p0
>         Physical Node: /pci@0,0/pci15d9,702@1d/hub@1/storage@7/disk@0,0
>         Connected Device: Kingston DT Rubber 3.0    1.01
>         Device Type: Removable
>         Bus: USB
>         Size: 15.0 GB
>         Label: <Unknown>
>         Access permissions: <Unknown>
>
> real    0m0.029s
> user    0m0.004s
> sys     0m0.013s
>
> That means this is most likely going to be something specific to your
> hardware, or perhaps to the data on your USB key or some other device.
> Maybe OS-1952 or something like it is involved
> (http://smartos.org/bugview/OS-1952).
>



-------------------------------------------
smartos-discuss
Archives: https://www.listbox.com/member/archive/184463/=now
RSS Feed: https://www.listbox.com/member/archive/rss/184463/25769125-55cfbc00
Modify Your Subscription: 
https://www.listbox.com/member/?member_id=25769125&id_secret=25769125-7688e9fb
Powered by Listbox: http://www.listbox.com

Reply via email to