scala-io, перемещение файла из tmpfs слишком медленное

Я столкнулся со странным scala-iomoveTo метод выпуска. Вот моя файловая система, tmp Каталог находится в оперативной памяти.

 ~% df -Th ~ /:)
Тип файловой системы Используемый размер Доступен Использовать% Установлен на
rootfs         rootfs    112G   18G   89G  17% /
/dev           devtmpfs  3.9G     0  3.9G   0% /dev
запустить tmpfs     3.9G  236K  3.9G   1% / пробег
/dev/sda       btrfs     112G   18G   89G  17% /
шм tmpfs     3.9G  872K  3.9G   1% /dev/shm
tmpfs          tmpfs     3.9G   34M  3.9G   1% / тонну

При перемещении файла из tmp в домашний каталог или в обратном направлении, сначала это очень медленно (субъективно около 1M/s, в то время как iotop показывает нелепые 1500 М / с), во-вторых, это вызывает 100% загрузку процессора. При перемещении файлов в одной файловой системе все работает как положено.

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 метод работает отлично; replace а также atomicMove флаги ничего не меняют; а также 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

1 ответ

Решение

Turned out, it was an issue with moveTo реализация. Теперь это исправлено.

Другие вопросы по тегам