Implementation of IO with Panama
pedro.lamarao at prodist.com.br
Tue May 18 18:05:26 UTC 2021
The following is a repository with my experiments using the foreign linker.
It is up to date with a recent build from panama-jextract.
Included is an implementation for asynchronous sockets using overlapped I/O
and completion ports.
The most interesting test is a pressure test for asynchronous accept /
Em seg., 19 de abr. de 2021 às 10:37, Pedro Lamarão <
pedro.lamarao at prodist.com.br> escreveu:
> thanks for this interesting work!
> It has inspired me to push my own incomplete experiments with NIO for
> I have just pushed it to github for your consideration.
> win32 = https://github.com/pedrolamarao/sandbox-jvm-windows
> nio = https://github.com/pedrolamarao/sandbox-jvm-windows-nio
> I hope you will find them useful!
> I'm waiting for an opportunity to update them to the new FMA API.
> Em qui., 15 de abr. de 2021 às 20:40, Radosław Smogura <mail at smogura.eu>
>> Hi all,
>> I hope you have a good day.
>> I started implementing I/O for JDK using Panama (I could not find such
>> project). I think this is natural consequence of Panama project.
>> Right now, it's done as separate Maven project, which can be found here
>> Generally, I'm happy it went so smooth.
>> Well done!
>> I created CachedAllocator (first version) which will keep memory segments
>> cached to avoid calling alloc / free (I did not make performance tests
>> between both versions).
>> I created as well simple benchmarks
>> Benchmark Mode Cnt Score Error
>> SocketReadJdk.teatRead4k thrpt 15 1202109.549 ± 127132.855
>> SocketReadJdk.testRead16b thrpt 15 2818334.225 ± 82209.971
>> SocketReadJdk.testRead8bOffset thrpt 15 2851310.595 ± 20675.631
>> SocketReadPosix.teatRead4k thrpt 15 1187974.868 ± 101285.497
>> SocketReadPosix.testRead16b thrpt 15 2963827.190 ± 62004.165
>> SocketReadPosix.testRead8bOffset thrpt 15 2999631.814 ± 23925.859
>> From minor things and ideas:
>> * I could not capture errno using jextract, my script uses
>> --include-var errno, but I had ask for this symbol manually
>> * Privately I wonder about safety of errno, as between call to Posix
>> function and reading value we have JVM, which can meantime invoke Posix
>> methods too and make errno dirty (low probability I think)
>> * I wonder if we could add class LocalSegmentAllocator which will
>> allocate memory segment on stack (I know there are some risks)
>> If you have any questions, or ideas I'm happy to answer.
>> and I think with moving forward I can provide quite interesting feedback.
>> The goal is to make complete rewrite, together with mmap, and async I/O.
>> Best regards,
> Pedro Lamarão
> Securing Critical Systems
> Tel: +55 11 4380-6585
> Antes de imprimir esta mensagem e seus anexos, certifique-se que seja
> realmente necessário.
> Proteger o meio ambiente é nosso dever.
> Before printing this e-mail or attachments, be sure it is necessary.
> It is in our hands to protect the environment.
Securing Critical Systems
Tel: +55 11 4380-6585
Antes de imprimir esta mensagem e seus anexos, certifique-se que seja
Proteger o meio ambiente é nosso dever.
Before printing this e-mail or attachments, be sure it is necessary.
It is in our hands to protect the environment.
More information about the panama-dev