Implementation of IO with Panama

Pedro Lamarão pedro.lamarao at prodist.com.br
Mon Apr 19 13:37:38 UTC 2021


Rado,
thanks for this interesting work!
It has inspired me to push my own incomplete experiments with NIO for
Windows.
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.
Atte.
Pedro.


Em qui., 15 de abr. de 2021 às 20:40, Radosław Smogura <mail at smogura.eu>
escreveu:

> 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
> https://github.com/rsmogura/panama-io
>
> 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
> Units
> SocketReadJdk.teatRead4k          thrpt   15  1202109.549 ± 127132.855
> ops/s
> SocketReadJdk.testRead16b         thrpt   15  2818334.225 ±  82209.971
> ops/s
> SocketReadJdk.testRead8bOffset    thrpt   15  2851310.595 ±  20675.631
> ops/s
> SocketReadPosix.teatRead4k        thrpt   15  1187974.868 ± 101285.497
> ops/s
> SocketReadPosix.testRead16b       thrpt   15  2963827.190 ±  62004.165
> ops/s
> SocketReadPosix.testRead8bOffset  thrpt   15  2999631.814 ±  23925.859
> ops/s
>
> 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,
> Rado
>


-- 
Pedro Lamarão
https://www.prodist.com.br
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.


More information about the panama-dev mailing list