Сходство на основе JNA в Linux невозможно использовать, так как не удалось загрузить
У меня есть проект слушателя, реализованный на Java, который использует данные из kafka и помещает их в очередь Vanilla Chronicle. Я использую библиотеки Java jna, jna-platform версии 4.4.0 и хронической очереди версии 3.6.4. Когда я запускаю проект в Windows, он успешно использует и помещает данные в очередь. Однако, когда я запускаю его на "Ubuntu 16.04.3 LTS", который находится на виртуальной машине Azure, и помещает данные в очередь, происходит сбой. Кроме того, когда я запускаю его на своей локальной Ubuntu, которая находится в VM ware, он также успешно запускается. У кого-нибудь есть идея, в чем проблема? Журнал выполнения ниже:
*WARN [main] (net.openhft.affinity.Affinity:149):
Linux JNA-based affinity not usable because it failed to load! Reason: java.lang.ExceptionInInitializerError
at net.openhft.affinity.Affinity.isLinuxJNAAffinityUsable(Affinity.java:113)
at net.openhft.affinity.Affinity.<clinit>(Affinity.java:52)
at net.openhft.affinity.AffinitySupport.getThreadId(AffinitySupport.java:26)
at net.openhft.chronicle.VanillaChronicle$VanillaAppenderImpl.startExcerpt(VanillaChronicle.java:628)
at net.openhft.chronicle.VanillaChronicle$VanillaAppenderImpl.startExcerpt(VanillaChronicle.java:615)
at com.myproject.queue.DataQueueManager.add(DataQueueManager.java:55)
at com.myproject.listener.myprojectListener.initKafka(myprojectListener.java:67)
at com.myproject.listener.myprojectListener.start(myprojectListener.java:43)
at com.myproject.listener.myprojectListener.main(myprojectListener.java:35)
Caused by: java.lang.IllegalStateException: sched_getaffinity(0, (8) , cpuset) failed; errno=22
at net.openhft.affinity.impl.LinuxHelper.sched_getaffinity(LinuxHelper.java:61)
at net.openhft.affinity.impl.LinuxJNAAffinity.getAffinity(LinuxJNAAffinity.java:62)
at net.openhft.affinity.impl.LinuxJNAAffinity.<clinit>(LinuxJNAAffinity.java:49)
... 9 more
Caused by: com.sun.jna.LastErrorException: [22] H"
at com.sun.jna.Native.invokeInt(Native Method)
at com.sun.jna.Function.invoke(Function.java:390)
at com.sun.jna.Function.invoke(Function.java:323)
at com.sun.jna.Library$Handler.invoke(Library.java:236)
at net.openhft.affinity.impl.$Proxy7.sched_getaffinity(Unknown Source)
at net.openhft.affinity.impl.LinuxHelper.sched_getaffinity(LinuxHelper.java:56)
... 11 more
07.09.2017 12:58:28.631 WARN [main] (net.openhft.affinity.Affinity:149):
Posix JNA-based affinity not usable because it failed to load! Reason: java.lang.ExceptionInInitializerError
at net.openhft.affinity.Affinity.isPosixJNAAffinityUsable(Affinity.java:99)
at net.openhft.affinity.Affinity.<clinit>(Affinity.java:56)
at net.openhft.affinity.AffinitySupport.getThreadId(AffinitySupport.java:26)
at net.openhft.chronicle.VanillaChronicle$VanillaAppenderImpl.startExcerpt(VanillaChronicle.java:628)
at net.openhft.chronicle.VanillaChronicle$VanillaAppenderImpl.startExcerpt(VanillaChronicle.java:615)
at com.myproject.queue.DataQueueManager.add(DataQueueManager.java:55)
at com.myproject.listener.myprojectListener.initKafka(myprojectListener.java:67)
at com.myproject.listener.myprojectListener.start(myprojectListener.java:43)
at com.myproject.listener.myprojectListener.main(myprojectListener.java:35)
Caused by: java.lang.IllegalStateException: sched_getaffinity((4) , &(allocated@0x7f2ba436c7e0 (4 bytes) (com.sun.jna.ptr.IntByReference@a437470b)) ) errorNo=22
at net.openhft.affinity.impl.PosixJNAAffinity.getAffinity(PosixJNAAffinity.java:125)
at net.openhft.affinity.impl.PosixJNAAffinity.<clinit>(PosixJNAAffinity.java:64)
... 9 more
Caused by: com.sun.jna.LastErrorException: [22] ý
at com.sun.jna.Native.invokeInt(Native Method)
at com.sun.jna.Function.invoke(Function.java:390)
at com.sun.jna.Function.invoke(Function.java:323)
at com.sun.jna.Library$Handler.invoke(Library.java:236)
at net.openhft.affinity.impl.$Proxy8.sched_getaffinity(Unknown Source)
at net.openhft.affinity.impl.PosixJNAAffinity.getAffinity(PosixJNAAffinity.java:117)
... 10 more
07.09.2017 12:58:28.633 INFO [main] (net.openhft.affinity.Affinity:61):
Using dummy affinity control implementation
07.09.2017 12:58:28.634 ERROR [main] (com.myproject.listener.myprojectListener:71):
java.lang.UnsupportedOperationException*
1 ответ
Caused by: com.sun.jna.LastErrorException: [22] H"
Код ошибки 22 из источника Linux EINVAL
[1].
Глядя на man
страница для функции sched_getaffinity
показывает причину EINVAL
возвращается:
EINVAL (sched_getaffinity() and, in kernels before 2.6.9, sched_setaffinity()) cpusetsize is smaller than the size of the affinity mask used by the kernel.
Это может быть проблемой в библиотеке, но более вероятно из-за среды выполнения и способа, которым инфраструктура виртуальной машины сообщает / использует маски ЦП.
Как указал Питер, ценность установки сходства процессов в виртуализированной среде сомнительна.
1) http://elixir.free-electrons.com/linux/v4.4.84/source/include/uapi/asm-generic/errno-base.h#L25