All of lore.kernel.org
 help / color / mirror / Atom feed
From: Scott A Crosby <scrosby@cs.rice.edu>
To: linux-kernel@vger.kernel.org
Subject: Sluggishness in 2.6.7 caused by IDE stack
Date: Sat, 25 Sep 2004 07:26:19 -0500	[thread overview]
Message-ID: <oydsm964jro.fsf@bert.cs.rice.edu> (raw)

I was burning a DVD-R on a new brand of media and I was experience
fairly high system sluggishness. I've burned other DVD's on a
different brand of media on this drive at a slower speed without this
effect.

The system is an Athlon XP 2500+ running 2.6.7 with a Liteon 832s dvd
burner.

Much of the CPU time was spent in system mode. I setup a quick
oprofile, which blamed the function task_no_data_intr, but an
opannotate reports confusing results, possibly from interrupts? dmesg
reported nothing interesting.


Scott


*** vmstat output ***

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 1  1 410496   8520  14224 1253716    0    0  2180    16  409   633 10 43  0 48
 7  1 410496   6920  14236 1255380    0    0  1668    20  589   832  9 18  0 73
 3  0 410496   8264  14232 1253988    0    0  2436    80  334   438 18 82  0  0
 0  1 410496   8384  14244 1253860    0    0  1932     0  464   706 13 35  0 52
 5  1 410496   8056  14264 1253872  328    0  2280     0  717   965 14 20  0 65
 8  1 410496   7352  14268 1254640    0    0  2692     0  351   485 17 83  0  0
 2  2 410496   6968  14264 1255036   32    0  2336     0  332   522 17 83  0  0
 5  0 410496   8568  14276 1253384    0    0  2192    12  464   794 19 33  0 48

*** oprofile output ***

samples  %        app name                 symbol name
1217485  94.2994  vmlinux                  task_no_data_intr
7714      0.5975  firefox-bin              (no symbols)
5975      0.4628  libc-2.3.2.so            (no symbols)
5199      0.4027  vmlinux                  pci_bus_match_dynids
3798      0.2942  XFree86                  (no symbols)


*** opreport -d output ***

c022f520 1218267  89.3898  task_no_data_intr
  c022f530 2        1.6e-04
  c022f535 30        0.0025
  c022f53a 2186      0.1794
  c022f54a 90        0.0074
  c022f561 2        1.6e-04
  c022f56d 1196860  98.2428
  c022f570 19037     1.5626
  c022f571 1        8.2e-05
  c022f584 2        1.6e-04
  c022f589 57        0.0047

*** Relevant assembly code in task_no_data_intr ***

c022f520 <task_no_data_intr>: /* task_no_data_intr total: 1218267 89.3898 */
               :c022f520:       sub    $0x1c,%esp
               :c022f523:       mov    %edi,0x14(%esp,1)
               :c022f527:       mov    %ebx,0xc(%esp,1)
               :c022f52b:       mov    %esi,0x10(%esp,1)
               :c022f52f:       mov    0x20(%esp,1),%edi
               :c022f533:       mov    %ebp,0x18(%esp,1)
               :c022f537:       mov    0x70(%edi),%esi
  2186  0.1604 :c022f53a:       mov    0x8(%esi),%eax
               :c022f53d:       mov    0x20(%eax),%eax
               :c022f540:       mov    0x68(%eax),%ebp
               :c022f543:       sti    
               :c022f544:       mov    0x70(%edi),%eax
               :c022f547:       mov    0x34(%eax),%eax
    90  0.0066 :c022f54a:       mov    %eax,(%esp,1)
               :c022f54d:       call   *0x4b8(%esi)
               :c022f553:       movzbl %al,%ebx
               :c022f556:       mov    %ebx,%eax
               :c022f558:       and    $0xc9,%eax
               :c022f55d:       cmp    $0x40,%eax
               :c022f560:       je     c022f58b <task_no_data_intr+0x6b>
               :c022f562:       mov    0x1c(%edi),%eax
               :c022f565:       mov    %edi,(%esp,1)
               :c022f568:       movl   $0xc02dfecf,0x4(%esp,1)
 19037  1.3968 :c022f570:       mov    %ebx,0x8(%esp,1)
               :c022f574:       call   *0x20(%eax)
               :c022f577:       mov    0xc(%esp,1),%ebx
               :c022f57b:       mov    0x10(%esp,1),%esi
               :c022f57f:       mov    0x14(%esp,1),%edi
               :c022f583:       mov    0x18(%esp,1),%ebp
               :c022f587:       add    $0x1c,%esp
               :c022f58a:       ret    
               :c022f58b:       test   %ebp,%ebp
               :c022f58d:       je     c022f5b1 <task_no_data_intr+0x91>
               :c022f58f:       mov    0x70(%edi),%eax
               :c022f592:       mov    0x1c(%eax),%eax
               :c022f595:       mov    %eax,(%esp,1)
               :c022f598:       call   *0x4b8(%esi)
               :c022f59e:       mov    %edi,(%esp,1)
               :c022f5a1:       mov    %ebx,0x4(%esp,1)
               :c022f5a5:       movzbl %al,%eax
               :c022f5a8:       mov    %eax,0x8(%esp,1)
               :c022f5ac:       call   c0229b90 <ide_end_drive_cmd>
               :c022f5b1:       xor    %eax,%eax
               :c022f5b3:       jmp    c022f577 <task_no_data_intr+0x57>
               :c022f5b5:       lea    0x0(%esi,1),%esi
               :c022f5b9:       lea    0x0(%edi,1),%edi
               :

** Source code for function ***
**     drivers/ide/ide-taskfile.c:278

ide_startstop_t task_no_data_intr (ide_drive_t *drive)
{
        ide_task_t *args        = HWGROUP(drive)->rq->special;
        ide_hwif_t *hwif        = HWIF(drive);
        u8 stat;

        local_irq_enable();
        if (!OK_STAT(stat = hwif->INB(IDE_STATUS_REG),READY_STAT,BAD_STAT)) {
                DTF("%s: command opcode 0x%02x\n", drive->name,
                        args->tfRegister[IDE_COMMAND_OFFSET]);
                return DRIVER(drive)->error(drive, "task_no_data_intr", stat);
                /* calls ide_end_drive_cmd */
        }
        if (args)
                ide_end_drive_cmd(drive, stat, hwif->INB(IDE_ERROR_REG));

        return ide_stopped;
}

             reply	other threads:[~2004-09-25 12:27 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-25 12:26 Scott A Crosby [this message]
2004-09-25 14:11 ` Sluggishness in 2.6.7 caused by IDE stack Kenneth Johansson
2004-10-02 23:00   ` Kenneth Johansson

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=oydsm964jro.fsf@bert.cs.rice.edu \
    --to=scrosby@cs.rice.edu \
    --cc=linux-kernel@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.