Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 08 Feb 2001 04:08:12 -0800
From:      Julian Elischer <julian@elischer.org>
To:        Josef Karthauser <joe@tao.org.uk>
Cc:        Robert Watson <rwatson@FreeBSD.ORG>, Dag-Erling Smorgrav <des@ofug.org>, Brian Somers <brian@Awfulhak.org>, Bruce Evans <bde@zeta.org.au>, freebsd-current@FreeBSD.ORG, freebsd-hackers@FreeBSD.ORG
Subject:   Re: What's changed recently with vmware/linuxemu/file I/O
Message-ID:  <3A828C2C.F7CDA809@elischer.org>
References:  <xzpsnlqmh0o.fsf@flood.ping.uio.no> <Pine.NEB.3.96L.1010207220443.19807J-100000@fledge.watson.org> <20010208113519.A789@tao.org.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
Josef Karthauser wrote:
> 
> 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.

Write caching is incompaible with soft updates.
The drive must NEVER report that something is on disk when it really is not!

> 
> 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?)
this sounds like a differnt starvation problem.
when it's happenning, what does 'iostat 1' show?
(how many transactions per second?)

I believe that vmware mmaps a region of memory and then somehow syncs 
it to disk. (It is certainly doing something like it here).


> 
> 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'?

maybe syncing mmapped regions locks out other types of activity?
Matt?


>
> +#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
> 

we used to do this on the interjet because we ran soft updates.

-- 
      __--_|\  Julian Elischer
     /       \ julian@elischer.org
    (   OZ    ) World tour 2000-2001
---> X_.---._/  
            v


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3A828C2C.F7CDA809>