On Wed, Feb 07, 2001 at 10:07:06PM -0500, Robert Watson wrote:
> 
> On 7 Feb 2001, Dag-Erling Smorgrav wrote:
> 
> > Brian Somers <[EMAIL PROTECTED]> writes:
> > > Indeed.  I've been doing a ``make build'' on an OpenBSD-current vm 
> > > for three days (probably about 36 hours excluding suspends) on a 
> > > 366MHz laptop with a ATA33 disk.
> > 
> > Would it be possible for someone experiencing this slowdown to try to
> > narrow down the day (or even the week) on which it occurred?
> 
> I've experienced a substantial slowdown in VMware since bumping forwards
> from -STABLE on my workstation.  As I recently commented on -emulation,
> I've also been experiencing 30-40 second hangs of the system during VMware
> startup and occasional serious slowdown while running, which may be
> related to the fairly intensive VM activity for page wiring and the like,
> or possible poor interaction with the ATA driver.  I also get messages on
> the order of the following: 

The slowdown during start up appears to be in biowr; this is probably
because of IDE write caching being switched off.  More seriously
the vmware hangs during various phases of it's boot process.

i.e:

  714 root     -14   0   123M 79192K inode    0:45 25.29% 25.29% vmware

When this happens the whole machine freezes also.  Processes run, but
new processes don't get forked.  The whole machine appears to be I/O
bound.   (What's the 'inode' state?)

The problem is definitely solved by enabling ATA_ENABLE_WC in the kernel
config.  What's unclear to me is why the hang in 'inode' with it
switched off.  I understand that biowr's would take longer, which is
vmware does as it brings up the virtual machine, but why the hanging
and freezing in 'inode'?

Joe


RCS file: /home/ncvs/src/sys/dev/ata/ata-disk.c,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -r1.91 -r1.92
--- ata-disk.c  2001/01/19 13:53:54     1.91
+++ ata-disk.c  2001/01/29 18:00:35     1.92
@@ -25,7 +25,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.91 2001/01/19 13:53:54 peter Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.92 2001/01/29 18:00:35 sos Exp $
  */
 
 #include "opt_global.h"
@@ -133,10 +133,15 @@
                    0, 0, 0, 0, ATA_C_F_ENAB_RCACHE, ATA_WAIT_INTR))
        printf("ad%d: enabling readahead cache failed\n", adp->lun);
 
+#if defined(ATA_ENABLE_WC) || defined(ATA_ENABLE_TAGS)
     if (ata_command(adp->controller, adp->unit, ATA_C_SETFEATURES,
                    0, 0, 0, 0, ATA_C_F_ENAB_WCACHE, ATA_WAIT_INTR))
        printf("ad%d: enabling write cache failed\n", adp->lun);
-
+#else
+    if (ata_command(adp->controller, adp->unit, ATA_C_SETFEATURES,
+                   0, 0, 0, 0, ATA_C_F_DIS_WCACHE, ATA_WAIT_INTR))
+       printf("ad%d: disabling write cache failed\n", adp->lun);
+#endif
     /* use DMA if drive & controller supports it */
     ata_dmainit(adp->controller, adp->unit,
                ata_pmode(AD_PARAM), ata_wmode(AD_PARAM), ata_umode(AD_PARAM));

PGP signature

Reply via email to