From: Coly Li <colyli@suse.de>
To: Eric Wheeler <bcache@lists.ewheeler.net>
Cc: Bcache Linux <linux-bcache@vger.kernel.org>,
Martin McClure <martin.mcclure@gemtalksystems.com>,
Adriano Silva <adriano_da_silva@yahoo.com.br>
Subject: Re: Writeback cache all used.
Date: Mon, 3 Apr 2023 15:14:11 +0800 [thread overview]
Message-ID: <E69AB364-712A-41A3-91EB-46F85A8F3E69@suse.de> (raw)
In-Reply-To: <eca36733-cdbd-6e16-2436-906ab2a38da9@ewheeler.net>
> 2023年4月2日 08:01,Eric Wheeler <bcache@lists.ewheeler.net> 写道:
>
> On Fri, 31 Mar 2023, Adriano Silva wrote:
>> Thank you very much!
>>
>>> I don't know for sure, but I'd think that since 91% of the cache is
>>> evictable, writing would just evict some data from the cache (without
>>> writing to the HDD, since it's not dirty data) and write to that area of
>>> the cache, *not* to the HDD. It wouldn't make sense in many cases to
>>> actually remove data from the cache, because then any reads of that data
>>> would have to read from the HDD; leaving it in the cache has very little
>>> cost and would speed up any reads of that data.
>>
>> Maybe you're right, it seems to be writing to the cache, despite it
>> indicating that the cache is at 100% full.
>>
>> I noticed that it has excellent reading performance, but the writing
>> performance dropped a lot when the cache was full. It's still a higher
>> performance than the HDD, but much lower than it is when it's half full
>> or empty.
>>
>> Sequential writing tests with "_fio" now show me 240MB/s of writing,
>> which was already 900MB/s when the cache was still half full. Write
>> latency has also increased. IOPS on random 4K writes are now in the 5K
>> range. It was 16K with half used cache. At random 4K with Ioping,
>> latency went up. With half cache it was 500us. It is now 945us.
>>
>> For reading, nothing has changed.
>>
>> However, for systems where writing time is critical, it makes a
>> significant difference. If possible I would like to always keep it with
>> a reasonable amount of empty space, to improve writing responses. Reduce
>> 4K latency, mostly. Even if it were for me to program a script in
>> crontab or something like that, so that during the night or something
>> like that the system executes a command for it to clear a percentage of
>> the cache (about 30% for example) that has been unused for the longest
>> time . This would possibly make the cache more efficient on writes as
>> well.
>
> That is an intersting idea since it saves latency. Keeping a few unused
> ready to go would prevent GC during a cached write.
>
Currently there are around 10% reserved already, if dirty data exceeds the threshold further writing will go into backing device directly.
Reserve more space doesn’t change too much, if there are always busy write request arriving. For occupied clean cache space, I tested years ago, the space can be shrunk very fast and it won’t be a performance bottleneck. If the situation changes now, please inform me.
> Coly, would this be an easy feature to add?
>
To make it, the change won’t be complexed. But I don’t feel it may solve the original writing performance issue when space is almost full. In the code we already have similar lists to hold available buckets for future data/metadata allocation. But if the lists are empty, there is still time required to do the dirty writeback and garbage collection if necessary.
> Bcache would need a `cache_min_free` tunable that would (asynchronously)
> free the least recently used buckets that are not dirty.
>
For clean cache space, it has been already. This is very fast to shrink clean cache space, I did a test 2 years ago, it was just not more than 10 seconds to reclaim around 1TB+ clean cache space. I guess the time might be much less, because reading the information from priorities file also takes time.
Coly Li
next prev parent reply other threads:[~2023-04-03 7:14 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1012241948.1268315.1680082721600.ref@mail.yahoo.com>
2023-03-29 9:38 ` Writeback cache all used Adriano Silva
2023-03-29 19:18 ` Eric Wheeler
2023-03-30 1:38 ` Adriano Silva
2023-03-30 4:55 ` Martin McClure
2023-03-31 0:17 ` Adriano Silva
2023-04-02 0:01 ` Eric Wheeler
2023-04-03 7:14 ` Coly Li [this message]
2023-04-03 19:27 ` Eric Wheeler
2023-04-04 8:19 ` Coly Li
2023-04-04 20:29 ` Adriano Silva
2023-04-05 13:57 ` Coly Li
2023-04-05 19:24 ` Eric Wheeler
2023-04-05 19:31 ` Adriano Silva
2023-04-06 21:21 ` Eric Wheeler
2023-04-07 3:15 ` Adriano Silva
2023-04-09 16:37 ` Coly Li
2023-04-09 20:14 ` Adriano Silva
2023-04-09 21:07 ` Adriano Silva
2023-04-20 11:35 ` Adriano Silva
2023-05-02 20:34 ` Eric Wheeler
2023-05-04 4:56 ` Coly Li
2023-05-04 14:34 ` Adriano Silva
2023-05-09 0:29 ` Eric Wheeler
2023-05-09 0:42 ` Eric Wheeler
2023-05-09 2:21 ` Adriano Silva
2023-05-11 23:10 ` Eric Wheeler
2023-05-12 5:13 ` Coly Li
2023-05-13 21:05 ` Eric Wheeler
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=E69AB364-712A-41A3-91EB-46F85A8F3E69@suse.de \
--to=colyli@suse.de \
--cc=adriano_da_silva@yahoo.com.br \
--cc=bcache@lists.ewheeler.net \
--cc=linux-bcache@vger.kernel.org \
--cc=martin.mcclure@gemtalksystems.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox