scala-io, перемещение файла из tmpfs слишком медленное
Я столкнулся со странным scala-io
moveTo
метод выпуска. Вот моя файловая система, 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
реализация. Теперь это исправлено.