On 13.02.2014 21:02, Ivan Zhakov wrote:
> On 13 February 2014 23:40, Stefan Fuhrmann <stefan.fuhrmann_at_wandisco.com> wrote:
>> On Thu, Feb 13, 2014 at 7:55 PM, Ivan Zhakov <ivan_at_visualsvn.com> wrote:
>>> On 13 February 2014 22:24, <stefan2_at_apache.org> wrote:
>>>> Author: stefan2
>>>> Date: Thu Feb 13 18:24:17 2014
>>>> New Revision: 1567996
>>>>
>>>> URL: http://svn.apache.org/r1567996
>>
>>>> +/* Count a hit in ENTRY within CACHE.
>>>> + */
>>>> +static void
>>>> +increment_hit_counters(svn_membuffer_t *cache, entry_t *entry)
>>>> +{
>>>> + /* To minimize the memory footprint of the cache index, we limit
>>>> local
>>>> + * hit counters to 32 bits. These may overflow and we must make sure
>>>> that
>>>> + * the global sums are still (roughly due to races) the sum of all
>>>> local
>>>> + * counters. */
>>>> + if (++entry->hit_count == 0)
>>>> + cache->hit_count -= APR_UINT32_MAX;
>>>> + else
>>>> + cache->hit_count++;
>>>> +
>>> As far I understand this counters are updated from several threads
>>> without mutex?
>>
>> That is correct.
>>
>>> In that case we have to use atomic functions to
>>> increment them, otherwise we may skip hit_count == 0 in some cases.
>>
>> No.
>> Assuming that the system does not split 32 bit read nor write operation
> I really, really don't like such assumptions in Subversion code. APR
> and OS already provides functions for proper inter process
> manipulations and we must use them, instead of saving several cycles.
Well, I've argued about such platform-specific micro-optimizations with
Stefan several times, to no avail.
Stefan, I really, really don't want this to become a veto war. Can you,
please, for once, stop assuming that all the world is running on the
latest versions of this or that architecture? We want Subversion to run
well on architectures that appear in the next 10 years without having to
find all the places you skipped using atomic instructions.
-- Brane
--
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. brane_at_wandisco.com
Received on 2014-02-13 21:16:12 CET