Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!ames!ncar!ico!ism780c!darryl From: darryl@ism780c.isc.com (Darryl Richman) Newsgroups: comp.unix.i386 Subject: Re: Microsoft Word & (SCO) Unix 3.2 Message-ID: <32271@ism780c.isc.com> Date: 25 Aug 89 15:17:28 GMT References: <7227@megatest.UUCP> <31897@ism780c.isc.com> <5864@ficc.uu.net> Reply-To: darryl@ism780c.UUCP (Darryl Richman) Organization: Interactive Systems Corp., Santa Monica CA Lines: 51 In article <5864@ficc.uu.net> peter@ficc.uu.net (Peter da Silva) writes: "This behaviour indeed speeds up most UNIX programs. However, programs written "using Intel's UDI interface, such as their PLM286 compiler and associated "tools, end up requesting 64K for all memory requests. This tends to lead to "processes that are very large, creates inordinate amounts of thrashing, and "even runs out of virtual memory space if the program makes frequent requests "for small amounts of memory. I'm surprised that you see a significant amount of thrashing, since, if you don't use the memory, it stays paged out. And pages that aren't touched don't get allocated real memory in the first place. If you are running out of virtual memory space in the emulator, you can up your ulimit. Obviously there is a limit to the process size, and there is a jump in process overhead every 4MB for the extra page table directory, but these seem like they should be a long way off for a 286 environment program. "The problem seems to be caused by intel's UDI returning a new segment for "every memory request. In real Xenix-286, small segments are returned for "small requests. In the emulator, all segments returned by x286emul are 64K "in size. Actually, the segments seen by the 286 program are the size that they requested. The segment descriptor used by the 286 program prevents access beyond the request. But the emulator does allocate 64k each time a new segment is needed. This would seem to put a strain on swap space and region table size more than anything else. Have you tried tuning your system? This is a surprising way to handle memory on a 286 considering that it is so expensive to load a segment register, the limited (4k-1) number of segments allowed to a user process, and the added overhead in process switching incurred by large LDTs. We have not encountered a problem like this one in the large number of commercial XENIX products we, Microsoft, and SCO tested. Have you discussed this problem with INTEL? In designing and implementing the environment emulator, our goals were to provide backward compatibility and the same or improved performance in existing products compared to running native on a 286. We (ISC, Microsoft, and AT&T) explicitly decided that we were not providing a platform for new development work (hence, the absence of support for debuggers and system maintenance functions) on the 286 since it was perceived to be an aging and limited market. --Darryl Richman -- Copyright (c) 1989 Darryl Richman The views expressed are the author's alone darryl@ism780c.isc.com INTERACTIVE Systems Corp.-A Kodak Company "For every problem, there is a solution that is simple, elegant, and wrong." -- H. L. Mencken