Re: PROBLEM: CephFS write performance drops by 90%

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 22, 2022 at 3:41 PM Roose, Marco <marco.roose@xxxxxxxxxxxxx> wrote:
>
> Hi Ilya,
> thanks for providing the revert. Using that commit all is fine:
>
> ~# uname -a
> Linux S1020-CephTest 6.1.0+ #1 SMP PREEMPT_DYNAMIC Thu Dec 22 14:30:22 CET
> 2022 x86_64 x86_64 x86_64 GNU/Linux
>
> ~# rsync -ah --progress /root/test-file_1000MB /mnt/ceph/test-file_1000MB
> sending incremental file list
> test-file_1000MB
>           1.00G 100%   90.53MB/s    0:00:10 (xfr#1, to-chk=0/1)
>
> I attach some ceph reports taking before, during and after an rsync on a bad
> kernel (5.6.0) for debugging.

I see two CephFS data pools and one of them is nearfull:

    "pool": 10,
    "pool_name": "cephfs_data",
    "create_time": "2020-11-22T08:19:53.701636+0100",
    "flags": 1,
    "flags_names": "hashpspool",

    "pool": 11,
    "pool_name": "cephfs_data_ec",
    "create_time": "2020-11-22T08:22:01.779715+0100",
    "flags": 2053,
    "flags_names": "hashpspool,ec_overwrites,nearfull",

How is this CephFS filesystem is configured?  If you end up writing to
cephfs_data_ec pool there, the slowness is expected.  nearfull makes
the client revert to synchronous writes so that it can properly return
ENOSPC error when nearfull develops into full.  That is the whole point
of the commit that you landed upon when bisecting so of course
reverting it helps:

-   if (ceph_osdmap_flag(&fsc->client->osdc, CEPH_OSDMAP_NEARFULL))
+   if ((map_flags & CEPH_OSDMAP_NEARFULL) ||
+       (pool_flags & CEPH_POOL_FLAG_NEARFULL))
            iocb->ki_flags |= IOCB_DSYNC;

Thanks,

                Ilya



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Ceph Dev]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux