RFR: 8225239: Refactor NetworkInterface lookups

Claes Redestad claes.redestad at oracle.com
Fri Jul 5 10:10:00 UTC 2019


Thanks, Michael!

/Claes

On 2019-07-05 10:02, Michael McMahon wrote:
> Claes,
> 
> This is great work and long overdue.
> Thanks for taking care of it.
> 
> - Michael.
> 
> On 04/07/2019, 20:20, Claes Redestad wrote:
>> Hi,
>>
>> please review this patch that refactors native java.net.NetworkInterface
>> lookup logic in a few ways to address both pre-existing and recent
>> regressions:
>>
>> Bug:    https://bugs.openjdk.java.net/browse/JDK-8225239
>> Webrev: http://cr.openjdk.java.net/~redestad/8225239/open.01/
>>
>> - adds a package-private method isBoundInetAddress that shortcuts
>>   some of the paths taken by existing methods when all we want to know
>>   is whether an IP address is bound to some interface on this system.
>>   This allows us to iterate over only IPv4 interfaces if the sought
>>   after IP address is an IPv4 address and vice versa for IPv6 addresses.
>>   This means a small (1.1x) to large (5x) speedup on a variety of
>>   systems, depending on how many IPv4 vs IPv6 interfaces exist on the
>>   system..
>>
>> - refactors how the Windows-specific GetIPAddrTable API is used: current
>>   implementation looks up the global IP address table over and over,
>>   once per bound address, which means time spent by operations like
>>   NetworkInterface.getByInetAddress grows at least quadratically with
>>   the number of interfaces on a system. Refactoring these methods so
>>   that GetIPAddrTable is called once means a dramatic improvement on
>>   some of the API calls, e.g getByInetAddress cost drops from ~100ms to
>>   ~10ms on one of our larger test systems.
>>
>> - Added some additional tests and a microbenchmark.
>>
>> Testing: tier1-4 (some still ongoing, but all green so far)
>>
>> Thanks!
>>
>> /Claes


More information about the net-dev mailing list