Yes,

There's a tool called Rat, there's a shell script it's included in our trunk, 
it checks our license headers etc are compliant for release.  I don't recall 
the details unfortunately, but I think you download the rat tool, set an env 
variable and run the script.  That would be very helpful.

Thanks,

Peter.

Sent from my Samsung device.
  Include original message
---- Original message ----
From: Patricia Shanahan <p...@acm.org>
Sent: 05/12/2015 12:01:04 pm
To: dev@river.apache.org
Subject: Re: Trunk merge and thread pools

Are there any practical things I can do to expedite the release? For  
example, if you rough draft documentation and/or release notes, I can do  
some editing. 

On 12/4/2015 5:08 PM, Peter wrote: 
> Trunk has now been replaced.  The only changes I'll make now are 
> documentation, release notes, build scripts, license header checks 
> and key signing. 
> 
> I could use some help as i am time poor. 
> 
> Presently I'm marking bugs on Jira as resolved, then I'll generate 
> the release notes. 
> 
> This release has been more thoroughly tested than any previous River 
> release 
> 
> After 3 is released, we could really utilise your experience 
> Patricia, especially with JERI's ConnectionManager and Multiplexer, 
> it uses complex shared and nested locks, supports 128 concurrent 
> connections (shared endpoints) over one Socket or Channel.  If I can 
> get contention with 2 cpu's, it's only going to get worse in a real 
> world situation. 
> 
> This contention would only affect nodes that share multiple remote 
> objects between them.  I suspect Gregg's use case will have multiple 
> connections between node pairs and hit this contention, I also 
> suspect that Greg is likely to  only have 1 or 2 connections between 
> nodes.  Once two nodes have more than 128 connections (connections 
> are directly proportional to the number of remote objects, server or 
> client shared between two nodes) another multiplexer will be created, 
> and so on, multiplexers sync on the ConnectionManager's monitor. 
> 
> I have a Sun T5240 (128 way 64GB Ram), with DilOS (an Illumos based 
> distro with Debian package management).  Soon, I should have an high 
> speed ipv6 connection courtesy of the NBN. When I do I'll set you up 
> with a remote login for testing. 
> 
> I'll delay further discussion of security until after 3 is released. 
> The changes I propose will have no bearing (won't be in their call 
> stack) on those who aren't concerned about security. 
> 
> I'll be gratefull for an opportunity to present my security code, 
> perhaps doing so may even dispell some fears. 
> 
> Regards, 
> 
> Peter. 
> 
> 
> Sent from my Samsung device. Include original message ---- Original 
> message ---- From: Patricia Shanahan <p...@acm.org> Sent: 05/12/2015 
> 01:37:10 am To: dev@river.apache.org Subject: Re: Trunk merge and 
> thread pools 
> 
> If you have a real world workload that shows contention, we could 
> make serious progress on performance improvement - after 3.0 ships. 
> 
> I am not even disagreeing with changes that are only shown to make 
> the tests more effective - after 3.0 ships. 
> 
> I am unsure about whether Peter is tilting at windmills or showing 
> the optimum future direction for River with his security ideas. I 
> would be happy to discuss the topic - after 3.0 ships. 
> 
> River 2.2.2, was released November 18, 2013, over two years ago 
> There is already a lot of good stuff in 3.0 that should be available 
> to users. 
> 
> I have a feeling at this point that we will still be discussing what 
> should be in 3..0 this time next year. In order to get 3.0 out, I 
> believe we need to freeze it. That means two types of changes only 
> until it ships - changes related to organizing the release and fixes 
> for deal-killing regression bugs. 
> 
> If I had the right skills and knowledge to finish up the release I 
> would do it. I don't. Ironically, I do know about multiprocessor 
> performance - I was performance architect for the Sun E10000 and 
> SunFire 15k. Given a suitable benchmark environment, I would love to 
> work on contention - after 3.0 ships. 
> 
> Patricia 
> 
> 
> 
> On 12/4/2015 6:19 AM, Gregg Wonderly wrote: 
>> With a handful of clients, you can ignore contention.  My 
>> applications have 20s of threads per client making very frequent 
>> calls through the service and this means that 10ms delays evolve 
>> into seconds of delay fairly quickly. 
>> 
>> I believe that if you can measure the contention with tooling, on 
>> your desktop, it is a viable goal to reduce it or eliminate it. 
>> 
>> It's like system time vs user time optimizations of old.  Now we 
>> are contending for processor cores instead of the processor, locked 
>> in the kernel, unable to dispatch more network traffic where it is 
>> always convenient to bury latency. 
>> 
>> Gregg 
>> 
>> Sent from my iPhone 
>> 
>> On Dec 4, 2015, at 9:57 AM, Greg Trasuk <tras...@stratuscom.com> 
>> wrote: 
>> 
>>>> On Dec 4, 2015, at 1:16 AM, Peter <j...@zeus.net.au> wrote: 
>>>> 
>>>> Since ObjectInputStream is a big hotspot,  for testing 
>>>> purposes, I merged these changes into my local version of 
>>>> River,  my validating ObjectInputStream outperforms the 
>>>> standard java ois 
>>>> 
>>>> Then TaskManager, used by the test became a problem, with 
>>>> tasks in contention up to 30% of the time. 
>>>> 
>>>> Next I replaced TaskManager with an ExecutorService (River 3, 
>>>> only uses TaskManager in tests now, it's no longer used by 
>>>> release code), but there was still contention  although not 
>>>> quite as bad. 
>>>> 
>>>> Then I notice that tasks in the test call Thread.yield(), 
>>>> which tends to thrash, so I replaced it with a short sleep of 
>>>> 100ms. 
>>>> 
>>>> Now monitor state was a maximum of 5%, much better. 
>>>> 
>>>> After these changes, the hotspot consuming 27% cpu was JERI's 
>>>> ConnectionManager.connect,  followed by 
>>>> Class.getDeclaredMethod at 15.5%, Socket.accept 14.4% and 
>>>> Class.newInstance at 10.8%. 
>>> 
>>> 
>>> First - performance optimization:  Unless you’re testing with 
>>> real-life workloads, in real-ife-like network environments, 
>>> you’re wasting your time.  In the real world, clients discover 
>>> services pretty rarely, and real-world architects always make 
>>> sure that communications time is small compared to processing 
>>> time.  In the real world, remote call latency is controlled by 
>>> network bandwidth and the speed of light.  Running in the 
>>> integration test environment, you’re seeing processor loads, not 
>>> network loads. There isn’t any need for this kind of 
>>> micro-optimization.  All you’re doing is delaying shipping, no 
>>> matter how wonderful you keep telling us it is. 
>>> 
>>> 
>>>> My validating ois,  originating from apache harmony, was 
>>>> modified to use explicit constructors during deserialization. 
>>>> This addressed finalizer attacks, final field immutability and 
>>>> input stream validation and the ois itself places a limit on 
>>>> downloaded bytes by controlling 
> 
> 
> 
> 

Reply via email to