home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / sys / acorn / 8272 < prev    next >
Encoding:
Internet Message Format  |  1992-08-18  |  4.7 KB

  1. Path: sparky!uunet!mcsun!uknet!acorn!osmith
  2. From: osmith@acorn.co.uk (Owen Smith)
  3. Newsgroups: comp.sys.acorn
  4. Subject: Re: Poor write performance to MS-DOS disks?
  5. Message-ID: <17847@acorn.co.uk>
  6. Date: 18 Aug 92 11:32:56 GMT
  7. References: <1992Aug10.095314.9963@waikato.ac.nz>
  8. Sender: osmith@acorn.co.uk
  9. Organization: Acorn Computers Ltd, Cambridge, England
  10. Lines: 77
  11.  
  12. In article <1992Aug10.095314.9963@waikato.ac.nz> mcg@waikato.ac.nz writes:
  13.  
  14. >In article <17611@acorn.co.uk>, jroach@acorn.co.uk (Jonathan Roach) writes:
  15. >------------8<------------------8<---------------8<--------------- 
  16. >> Now, if you apply this scheme to a DOS disc the whole disc starts going
  17. >> 'data lost' and it is altogether horrible for the user and there is much
  18. >> unhappiness. So, to get round this problem buffering on writing was
  19. >> prohibited on DOSFS discs and, in fact on any whole disc exports. This
  20. >> solution was chosen as time was getting short at this stage which kind of
  21. >> ruled out the minor architectural rethink which was appropriate (move the
  22. >> buffering into FileSwitch and split FileCore into 2 halves).
  23. >> 
  24. >> So, what we have now is reads being buffered and writes not on DOSFS discs
  25. >> which is why reads are OK in speed, and writes are slow.
  26. >
  27. > I prefer speed to accuracy.....
  28. >
  29. > The PCemulator writes 4 times faster than the #@$%$% desktop, i.e. for a 400k 
  30. >file, it takes the desktop 3 mintutes to write (with "Faster" on), c.f. 30 sec 
  31. >under the PCemulator; WHAT GIVES?
  32.  
  33. Jonathan forgot to say that he was merely describing ONE of the reasons for
  34. DOSFS writes being slow, which is natural since its the one that caused him
  35. much pain and angst. Jonathan's comments apply equally to RISC OS 3.10 and
  36. 3.00.
  37.  
  38. You are looking at a combination of factors here. Assuming the DOS disk is
  39. being written with the filer, then you have Filer_Action (the desktop task
  40. doing the multi-tasking copy etc.), FileCore (which handles the actual
  41. reading and writing of the data to the media via. ADFS including
  42. read-ahead/lack-of-write-behind and presents the file '$' ie. the disk to
  43. FileSwitch and hence DOSFS), and DOSFS itself which does file I/O to the
  44. file '$' and understands the format of DOS disks. FileSwitch does a tap
  45. dance in the middle while co-ordinating all of this (working out whether the
  46. file being opened is inside an image and if so opening $ as a file and
  47. presenting that to the image filing system eg. DOSFS). As you can see its a
  48. complex system. Features of one section of the software can have nasty
  49. effects on the others. Jonathan was only really describing the constraints
  50. in FileCore which lead to write-behind being disabled (and of course on 3.00
  51. read-ahead and write-behind are always disabled on ALL disks when you set
  52. ADFSBuffers to 0).
  53.  
  54. Another problem (which has already been mentioned) is that Filer_Action
  55. tries to keep the desktop interactivity up by reducing the read/write block
  56. size until it takes a short enough time. On RISC OS 3.00 DOSFS, writes are
  57. NEVER as fast as Filer_Action wants them to be, so Filer_Action keeps
  58. reducing the block size without noticing that the small block took just as
  59. long to write as the previous larger block did. Eventually the blocks hit
  60. the minimum size limit, and the transfer takes a lot longer than it would
  61. with bigger blocks. Using the "Faster" option cures this problem. On RISC OS
  62. 3.10 (but not 3.00) Filer_Action also keeps the data transfer rate above a
  63. certain level. So when the blocks get too small, it realises that it isn't
  64. getting anywhere fast and bumps the block size back up again. Obviously you
  65. have only seen 3.00 and so can't tell if the write speed is now acceptable.
  66.  
  67. Also on RISC OS 3.10 DOSFS itself has had quite a bit of work put into it
  68. since 3.00. This also makes things go faster, depending of course on the
  69. exact history of operations, current disk contents and current cache
  70. contents. (DOSFS has a directory cache, and I think it also has a cluster
  71. cache but I might be wrong.)
  72.  
  73. In conclusion I would ask you to defer judgement until you've upgraded
  74. to RISC OS 3.10 and redone your timings on that.
  75.  
  76. Remember, it looks simple to the user but underneath you are dealing with a
  77. complex system implemented in six different modules (ADFS, FileCore, DOSFS,
  78. FileSwitch, Filer, Filer_Action) written in two languages (DOSFS and
  79. Filer_Action are in C, the rest are in Assembler) written by different (and
  80. changing) authors and at different times in the history of RISC OS. The
  81. potential for strange and unexpected interactions and side effects is larger
  82. than with much of the rest of RISC OS, and trying to understand all of
  83. in in detail is daunting. Have you noticed how much of the PRMs is devoted
  84. to filing systems?
  85.  
  86. Owen.
  87.  
  88. The views expressed are my own and are not necessarily those of Acorn.
  89.