2012-03-22 27 views
6

我遇到了一個奇怪的scala-iomoveTo方法問題。這裏是我的文件系統,tmp目錄駐留在RAM中。scala-io,從tmpfs移動文件太慢

~ % df -Th                ~/ :) 
Filesystem  Type  Size Used Avail Use% Mounted on 
rootfs   rootfs 112G 18G 89G 17%/
/dev   devtmpfs 3.9G  0 3.9G 0% /dev 
run   tmpfs  3.9G 236K 3.9G 1% /run 
/dev/sda  btrfs  112G 18G 89G 17%/
shm   tmpfs  3.9G 872K 3.9G 1% /dev/shm 
tmpfs   tmpfs  3.9G 34M 3.9G 1% /tmp 

當從tmp移動文件到主目錄或向後,第一是WERY慢(主觀約1M/s,而iotop顯示荒謬1500M/s)的,第二它會導致100%的CPU負荷。在同一個文件系統中移動文件時,一切都按預期工作。

Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_03). 
Type in expressions to have them evaluated. 
Type :help for more information. 

scala> import scalax.file.Path 
import scalax.file.Path 

scala> val tmp = Path("/tmp/ensime") 
tmp: scalax.file.Path = Path(/tmp/ensime) 

scala> tmp.exists 
res0: Boolean = true 

scala> val home = Path("/home/_4e6/dest") 
home: scalax.file.Path = Path(/home/_4e6/dest) 

scala> home.exists 
res1: Boolean = false 

scala> tmp.moveTo(home) // very slow 
res2: scalax.file.Path = Path(/home/_4e6/dest) 

scala> home.moveTo(tmp) // a bit faster but still unsatisfactory 
res3: scalax.file.Path = Path(/tmp/ensime) 

此外,copyTo方法工作正常; replaceatomicMove標誌不會改變任何東西;和ramfs不適合我。

scala> val fs = scalax.file.ramfs.RamFileSystem() 
fs: scalax.file.ramfs.RamFileSystem = Ram File System 

scala> val ramTmp = fs("/tmp/ensime") 
ramTmp: scalax.file.Path = RamPath(/tmp/ensime) 

scala> ramTmp.exists 
res9: Boolean = false 

回答

0

原來,這是一個issuemoveTo實施。現在它已經修復了。