From: Arno Wagner <arno@wagner.name>
To: dm-crypt@saout.de
Subject: Re: [dm-crypt] Poor performane (idle cpu) [SOLVED; problem with "pv"]
Date: Tue, 9 Feb 2010 17:14:48 +0100 [thread overview]
Message-ID: <20100209161448.GA23112@tansi.org> (raw)
In-Reply-To: <20100209144829.GA4211@southpole.se>
[-- Attachment #1: Type: text/plain, Size: 2979 bytes --]
On Tue, Feb 09, 2010 at 03:48:29PM +0100, Jakob Sandgren wrote:
> On Tue, Feb 09, 2010 at 01:28:06AM +0100, Arno Wagner wrote:
> > On Tue, Feb 09, 2010 at 12:54:16AM +0100, Jakob Sandgren wrote:
> > > Hi,
> > >
> > > (please keep me on CC since I'm not subscribed yet)
> > >
> > > To me it seems like there is some serious flaw within kcryptd that
> > > ends up to wait for "something" instead of sending enough requests to
> > > the disks to make sure it has data to decrypt. What do you think?
> >
> > The same thing.
> >
> > Here is a reference test (I have notebook disks in this server):
> >
> > Raw read: 54MB/s 14% CPU
> > Read with decrypt: 53MB/s 65% CPU
>
> For reference this is the exact output of my benchmark, maybe there
> are some difference in setup or benchmark?
>
> OOOOOooops! While putting toghether this information I actually found
> the cause of the problem, it was my benchark that was wrong!
>
> This was the benchmark I used to get the performance was:
> dd if=/dev/mapper/bench1 bs=4M iflag=direct |pv | dd of=/dev/null
> and the number reported by "pv" during the run was ~75MB/s and dd
> reported the same number when finished.
>
> Changing this to:
> dd if=/dev/mapper/bench1 bs=4M iflag=direct of=/dev/null count=1000
> gave a more correct number; 125MB/s
>
>
> I was not aware of that piping the data through pv would cause such a
> big degradation in performance.
>
Ah, yes. I think it is historic and uses some things
that are slow.
I have my own tool (wcs for "wc-stream") that is a bit
faster and provides real-time speeds on a vt100. It is
really small. Sources are attached.
> > That would mean the crypto is pretty slow on your new CPU.
> > As a reference, my 53MB/s at 65% CPU is on an 2800MHz Athlon
> > 64 X2 5600+ with aes-cbc-plain.
> >
> > Here is an OpenSSL crypto speed test:
> > openssl speed -evp aes-256-cbc
> > [...]
> > The 'numbers' are in 1000s of bytes per second processed.
> > type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
> > aes-256-cbc 71848.00k 98649.49k 110187.78k 113646.25k 114666.15k
> >
> > You might want to compare this with the numbers on your CPU.
>
> The numbers from my system (Core I7) are below
>
> root@mvh:~# openssl speed -evp aes-256-cbc
> ...
> The 'numbers' are in 1000s of bytes per second processed.
> type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
> aes-256-cbc 110769.28k 118629.67k 120600.15k 121138.86k 121206.10k
>
> I has now been able to get a 175MB/sec from my main raid partition.
Good.
Arno
--
Arno Wagner, Dr. sc. techn., Dipl. Inform., CISSP -- Email: arno@wagner.name
GnuPG: ID: 1E25338F FP: 0C30 5782 9D93 F785 E79C 0296 797F 6B50 1E25 338F
----
Cuddly UI's are the manifestation of wishful thinking. -- Dylan Evans
If it's in the news, don't worry about it. The very definition of
"news" is "something that hardly ever happens." -- Bruce Schneier
[-- Attachment #2: wcs.c --]
[-- Type: text/x-csrc, Size: 2396 bytes --]
/* "wc-follow": wc with incremental output every second or so.
* Line positioning is done like in dd_rescue with
* "optimistic positioning" i.e. the hope that we have a terminal that
* understands vt100 positioning.
*
* (C) Arno Wagner <arno@wagner.name> 2008. Distributed under
* The GNU public license v2
*
* Version 1.0
*
* Compile with "gcc -O6 -o wcs wcs.c"
*/
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
const char* up = "\x1b[A"; //]
const char* down = "\n";
const char* right = "\x1b[C"; //]
char * usage() {
return("\n"
" Prints out running count and rate statistics about the data\n"
" read on stdin to stderr. Does use cursor positioning, which\n"
" should work on most terminals (vt100 or later).\n"
"\n"
" stdin is copied through to stdout, much like in tee.\n"
" \n"
" This programm does not support any commandline arguments.\n"
"\n"
"\n");
}
void printlong(long long l) {
if (l < 1000000L)
fprintf(stderr, "%7.3f kB", l/1000.0);
else if (l < 1000000000)
fprintf(stderr, "%7.3f MB", l/1000000.0);
else if (l < 1000000000000LL)
fprintf(stderr, "%7.3f GB", l/1000000000.0);
else
fprintf(stderr, "%7.3f TB", l/1000000000000.0);
}
int main(int argc, char ** argv) {
char buf[4096];
long long cnt = 0;
time_t to, tn, ts, dt;
int read_count;
double rate;
if (argc > 1) {
fprintf(stderr, "%s", usage());
exit(1);
}
to = time(NULL);
ts = to;
fprintf(stderr, down);
while (1) {
read_count = read (0, buf, sizeof(buf));
if (read_count < 0 && errno == EINTR) continue; // not an error
if (read_count < 0) {
perror("Abnormal condition in read from stdin:");
exit(1);
}
if (read_count > 0) {
cnt += read_count;
if (fwrite (buf, 1, read_count, stdout) != read_count) {
perror("Error in wcs writing to stdout:");
exit(1);
}
}
tn = time(NULL);
if (tn != to || read_count == 0) {
to = tn;
fprintf(stderr, "%s read: ", up);
printlong(cnt);
fprintf(stderr, " [ %12Ld B] avg: ", cnt);
// Calculate the rate
dt = tn - ts;
rate = cnt / (double)dt;
printlong((long long) rate);
fprintf(stderr, "/sec [ %5d sec]%s", dt, down);
}
if (read_count == 0) break; // we are done
}
}
next prev parent reply other threads:[~2010-02-09 16:13 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-08 1:16 [dm-crypt] Poor performane (idle cpu) Jakob Sandgren
2010-02-08 1:50 ` Arno Wagner
2010-02-08 23:54 ` Jakob Sandgren
2010-02-09 0:28 ` Arno Wagner
2010-02-09 14:48 ` [dm-crypt] Poor performane (idle cpu) [SOLVED; problem with "pv"] Jakob Sandgren
2010-02-09 16:14 ` Arno Wagner [this message]
2010-02-09 16:16 ` M Thomas Frederiksen
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=20100209161448.GA23112@tansi.org \
--to=arno@wagner.name \
--cc=dm-crypt@saout.de \
/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