On 27/01/2007, at 4:09 PM, Andy Dent wrote:

Check in /var/vm as to the number of swapfiles being created. If you have very little free space then maybe the OS is having trouble creating them as RB requires.

Just to provide more details, as I have read in my exploration of VM on OS/X that the OS refuses to allocate fragmented swapfiles, that is not actually the case and I just proved it.

For some reason, RB, deemed my plugins needed recompiling so I left the Mac going for the several hours it took to do so for PEF, Mach-O and Windows. I have MBS and Einhugur suites installed.

On my 1.25GB RAM PPC, my /var/vm folder went up to 8 swapfiles, a total of 2.5GB allocated, increasing mostly in a few minutes from the 128MB allocated prior to RB starting the plugin prep.

andeo-mac:/var/vm andydent$ ls -al
total 5242880
drwxr-xr-x   11 root  wheel        374 Jan 27 17:20 .
drwxr-xr-x   24 root  wheel        816 Jan 25 19:24 ..
drwx--x--x   14 root  wheel        476 Jan 25 17:22 app_profile
-rw------T    1 root  wheel   67108864 Jan 25 17:21 swapfile0
-rw------T    1 root  wheel   67108864 Jan 26 12:13 swapfile1
-rw------T    1 root  wheel  134217728 Jan 27 16:12 swapfile2
-rw------T    1 root  wheel  268435456 Jan 27 16:12 swapfile3
-rw------T    1 root  wheel  536870912 Jan 27 16:13 swapfile4
-rw------T    1 root  wheel  536870912 Jan 27 16:15 swapfile5
-rw------T    1 root  wheel  536870912 Jan 27 16:33 swapfile6
-rw------T    1 root  wheel  536870912 Jan 27 17:10 swapfile7

Using hfsdebug (*1), I found that the last four of these swapfiles were in two extents, rather than being contiguous. Previously, when I was very low on disk space and the free space was extremely fragmented, I had seen iDefrag report a massive number of extents for the swapfiles and my machine became utterly bogged down.

Something which is quite fascinating and also contrary to common web reports - the last three of these swapfiles later vanished after I had quit RB. Everything I've read says that OS/X won't reclaim swapfiles until you reboot. In this case it appears the only thing with a claim on those files was RB and so OS/X did in fact remove them when they weren't needed.

During the plugin preparation time, and the relatively small amount of time building the app, I continued trying to use the computer for some mild browsing activity. I was running the Activity Monitor at the time on another window and could see that the machine was flat out doing IO and with a massive amount of paging activity but certainly not CPU-bound.

I know from VMS experience (*2) that page thrashing can cause a normal user-priority process to bring a multi-tasking OS to its knees and it appears that OS/X is certainly not immune. This behaviour was like the worst I've experienced with Visual Studio compiling whilst trying to use Windows (I have no RB200x comparison possible on Windows as haven't bothered buying a Windows license for it).

These results actually give me some hope that RS can do something to improve the problem - apart from the possibility that there is a significant memory leak whilst compiling there is also the hope they can improve the locality of references made by the compiler (written in c++ so they have more control over such niceties).

http://en.wikipedia.org/wiki/Locality_of_reference

-----
(*1)
hfsdebug comes from http://www.osxbook.com/software/hfsdebug/

It allows you to quickly check the fragmentation of a single file, rather than using something like iDefrag which scans the entire disk.
(it also does many other reports).
eg:
andeo-mac:/var/vm andydent$ sudo hfsdebug swapfile4
  <Catalog B-Tree node = 116 (sector 0xaf50)>
  path                 = MacintoshHD:/private/var/vm/swapfile4
# Catalog File Record
  type                 = file
  file ID              = 5153585
  flags                = 0000000000000010
                       . File has a thread record in the catalog.
  reserved1            = 0
  createDate           = Sat Jan 27 16:13:20 2007
  contentModDate       = Sat Jan 27 16:13:21 2007
  attributeModDate     = Sat Jan 27 16:13:21 2007
  accessDate           = Sat Jan 27 16:13:20 2007
  backupDate           = Fri Jan  1 00:00:00 1904
  # BSD Info
  ownerID              = 0 (root)
  groupID              = 0 (wheel)
  adminFlags           = 00000000
  ownerFlags           = 00000000
  fileMode             = -rw------t
  linkCount            = 0
  textEncoding         = 0
  attrBlocks           = 0
  # Finder Info
  fdType               = 0
  fdCreator            = 0
  fdFlags              = 0000000000000000
  fdLocation           = (v = 0, h = 0)
  opaque               = 0
  # Data Fork
  logicalSize          = 536870912 bytes
  totalBlocks          = 131072
  fork temperature     = no HFC record in B-Tree
  clumpSize            = 0
  extents              =   startBlock   blockCount      % of file
                             0x262e24      0x18662        76.25 %
                             0x463c2e       0x799e        23.75 %
                         131072 allocation blocks in 2 extents total.
65536.00 allocation blocks per extent on an average.
  # Resource Fork
  logicalSize          = 0 bytes



----
(*2)
When I was a VMS sysadmin, about 20 years ago, we had a scientific programmer write some COBOL code. She didn't realise that FORTRAN accesses its arrays in the opposite order to COBOL and so her manipulation in arrays of about 4MB of data caused massive amounts of thrashing of pages as her code was having to page in memory every few instructions due to extremely poor locality of reference.

It brought an 80-user machine to its knees for about 2 hours as the code tried to do a series of filters and sorts in-memory. Nothing I could do with permissions or job priority control would stop this - I had to rewrite the program. The replacement as a pipeline using a series of simple filter programs and use of the Sort utility program, all on sequential files on disk, ran in a few seconds.
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to