All of lore.kernel.org
 help / color / mirror / Atom feed
From: Willem Jan Withagen <wjw@digiware.nl>
To: kefu chai <tchaikov@gmail.com>
Cc: "ceph-devel@vger.kernel.org" <ceph-devel@vger.kernel.org>
Subject: Re: Understanding some of the Cmake logics
Date: Tue, 10 Oct 2017 17:27:05 +0200	[thread overview]
Message-ID: <4e52a7ba-f0eb-5cc0-4bce-1bab78cbcad5@digiware.nl> (raw)
In-Reply-To: <CAJE9aOO8Jfa+xRKUupSY_gBD6Fk7tnMHUZMasfM3aYX=g7uLfw@mail.gmail.com>

On 10-10-2017 17:19, kefu chai wrote:
> On Tue, Oct 10, 2017 at 11:13 PM, Willem Jan Withagen <wjw@digiware.nl> wrote:
>> On 10-10-2017 16:58, kefu chai wrote:
>>> On Tue, Oct 10, 2017 at 9:54 PM, Willem Jan Withagen <wjw@digiware.nl> wrote:
>>>> On 10-10-2017 15:31, kefu chai wrote:
>>>>> On Tue, Oct 10, 2017 at 8:06 PM, Willem Jan Withagen <wjw@digiware.nl> wrote:
>>>>>> On 10-10-2017 13:14, kefu chai wrote:
>>>>>>> + ceph-devel
>>>>>>>
>>>>>>> On Tue, Oct 10, 2017 at 4:49 AM, Willem Jan Withagen <wjw@digiware.nl> wrote:
>>>>>>>> Hi Kefu,
>>>>>>>>
>>>>>>>> Sort of wondering what in the current code below is the relation between
>>>>>>>> gpertools and tcmalloc?
>>>>>>>
>>>>>>> could you be more specific?
>>>>>>
>>>>>> While looking at the code of CMakeLists.txt:286, in the case that no
>>>>>> ALLOCATOR is defined.
>>>>>> There the current flow of code seems to suggest that gperf-tools is
>>>>>> always linked to tcmalloc. And once gperftools is found, the ALLOCATOR
>>>>>> is set to tcmalloc. This then breaks rocksdb building.
>>>>>>     `set(HAVE_LIBTCMALLOC ${GPERFTOOLS_FOUND})`
>>>>>> like:
>>>>>> ```
>>>>>>  CMake Error at cmake/modules/BuildRocksDB.cmake:63 (message):
>>>>>>    Incompatible tcmalloc v2.6.1 and rocksdb v5.8.0, please install
>>>>>>  gperf-tools
>>>>>>    2.5 (not 2.5.93) or >= 2.6.2, or switch to another allocator using
>>>>>> 'cmake -DALLOCATOR=libc'.
>>>>>>  Call Stack (most recent call first):
>>>>>>    src/CMakeLists.txt:825 (build_rocksdb)
>>>>>> ```
>>>>>>
>>>>>>>> Reason for the question is that once the gperf packages is installed,
>>>>>>>> as a bonus the code below declares the allocator to be tcmalloc.
>>>>>>>> But gperf under FreeBSD does not have tcmalloc.
>>>>>>>
>>>>>>> please note gperf here is not GNU perf [1] but google-perftools. and
>>>>>>> why do you claim the gperf under FreeBSD does not have tcmalloc? could
>>>>>>> you elaborate this a little bit?
>>>>>>
>>>>>> My bad, I mixed gperf and gperf-tools. We are talking about gperf-tools.
>>>>>> And yes, gperftools brings tcmalloc but not in the version mix that is
>>>>>> asked for. gperf-tools was at 2.5 one time, but has upgraded to 2.6.1_1
>>>>>> on FreeBSD[1]. Getting other versions will require manual work to get it
>>>>>> to work.
>>>>>>
>>>>>> But the question is:
>>>>>>     Do I really want my allocator to be tcmalloc when the native
>>>>>>     libc allocator is jemalloc?
>>>>>
>>>>> i think it's up to you.
>>>>
>>>> Oke, it is what the code now forces...
>>>> And I've tried avoiding tcmalloc uptil now, and would like to do so for
>>>> the time being..
>>>>
>>>>>> So is the test in CMakeLists.txt:286-324 what we want on FreeBSD?
>>>>>
>>>>> see http://tracker.ceph.com/issues/21422. so again, it's up to you.
>>>>
>>>> The tracker suggests that it is an error in 2.5.93, but
>>>> cmake/modules/BuildRocksDB.cmake suggests that it is only fixed in
>>>> 2.6.2...??
>>>
>>> 2.6.2 is not yet released. so if you want to stick with tcmalloc, you
>>> need to build from the latest (or recent enough) source. actually, i
>>> am not sure what you question is..
>>
>> The question: Do you know if 2.6.2 is the first gperf-tools-version >
>> 2.5.93 where this bug from the tracker is solved?
> 
> https://github.com/ceph/ceph/pull/17788/commits/ff8d6a730bb774271b9eea6af338e2d3ce3c48a5

fascinating reading...
Shows that managing version can be a bitch.

>>>>>> The workaround this (for the time being) is to call cmake with
>>>>>> -DALLOCATOR=libc as is suggested.
>>>>
>>>> I'll use this as workaround for the time being, since that is least
>>>> invasive. And when that works out, try and make a PR for the allocator
>>>> selector in CmakeLists.txt, and/or wait until gperf-tools 2.6.2 is
>>>> available on FreeBSD.
>>>
>>> what is issue you want to address?
>>
>> The issue I want to address is that I'm not able to build the intree
>> rocksdb ATM. Because tcmalloc is not => 2.6.2, and tcmalloc is required
>> because gperf-tools is detected.
> 
> the error message offered two solutions. i think, what you need is
> just to choose one of them.

Right, so I'm going with libc for the moment...

Thanx for your patient explanations,
--WjW



  reply	other threads:[~2017-10-10 15:27 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <b06780c7-13ce-1274-735f-806a1f4f8062@digiware.nl>
2017-10-10 11:14 ` Understanding some of the Cmake logics kefu chai
2017-10-10 12:06   ` Willem Jan Withagen
2017-10-10 13:31     ` kefu chai
2017-10-10 13:54       ` Willem Jan Withagen
2017-10-10 14:58         ` kefu chai
2017-10-10 15:13           ` Willem Jan Withagen
2017-10-10 15:19             ` kefu chai
2017-10-10 15:27               ` Willem Jan Withagen [this message]
2017-10-10 15:35                 ` kefu chai
2017-10-10 15:41                   ` Willem Jan Withagen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4e52a7ba-f0eb-5cc0-4bce-1bab78cbcad5@digiware.nl \
    --to=wjw@digiware.nl \
    --cc=ceph-devel@vger.kernel.org \
    --cc=tchaikov@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.