From 7673cbd75438c7e69271a8efae3d836b7d8f6ea4 Mon Sep 17 00:00:00 2001 From: Clebert Suconic Date: Wed, 4 Apr 2018 20:37:38 -0400 Subject: [PATCH] ARTEMIS-618 Using proper block size on Native One Mega Buffer This buffer is used on fill --- .../core/io/aio/AIOSequentialFile.java | 2 +- artemis-native/bin/libartemis-native-64.so | Bin 28687 -> 28848 bytes ...e_activemq_artemis_jlibaio_LibaioContext.c | 56 +++++++++-- .../artemis/jlibaio/LibaioContext.java | 4 +- .../activemq/artemis/jlibaio/LibaioFile.java | 6 +- .../artemis/jlibaio/test/LibaioTest.java | 90 +++++++++--------- .../jlibaio/test/OpenCloseContextTest.java | 4 +- .../tests/unit/core/asyncio/AIOTestBase.java | 2 +- 8 files changed, 100 insertions(+), 64 deletions(-) diff --git a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/aio/AIOSequentialFile.java b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/aio/AIOSequentialFile.java index 7863406f709..139b23613b6 100644 --- a/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/aio/AIOSequentialFile.java +++ b/artemis-journal/src/main/java/org/apache/activemq/artemis/core/io/aio/AIOSequentialFile.java @@ -151,7 +151,7 @@ public synchronized void fill(final int size) throws Exception { } checkOpened(); - aioFile.fill(size); + aioFile.fill(aioFactory.getAlignment(), size); fileSize = aioFile.getSize(); } diff --git a/artemis-native/bin/libartemis-native-64.so b/artemis-native/bin/libartemis-native-64.so index 8cbe85138b280e1e4756c977b451a08e65de6b7c..d11c1cdeae3896e83b619a2804880c0367b4f14e 100755 GIT binary patch literal 28848 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 Fe*nxDVZQ(X literal 28687 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 IyD+Q$zk=>U9RL6T diff --git a/artemis-native/src/main/c/org_apache_activemq_artemis_jlibaio_LibaioContext.c b/artemis-native/src/main/c/org_apache_activemq_artemis_jlibaio_LibaioContext.c index 3f7c21364f8..e42ee43b739 100644 --- a/artemis-native/src/main/c/org_apache_activemq_artemis_jlibaio_LibaioContext.c +++ b/artemis-native/src/main/c/org_apache_activemq_artemis_jlibaio_LibaioContext.c @@ -65,6 +65,7 @@ char dumbPath[PATH_MAX]; #define ONE_MEGA 1048576l void * oneMegaBuffer = 0; +pthread_mutex_t oneMegaMutex; jclass submitClass = NULL; @@ -119,18 +120,39 @@ char* exceptionMessage(char* msg, int error) { return result; } +static inline short verifyBuffer(int alignment) { + pthread_mutex_lock(&oneMegaMutex); + + if (oneMegaBuffer == 0) { + #ifdef DEBUG + fprintf (stdout, "oneMegaBuffer %ld\n", (long) oneMegaBuffer); + #endif + if (posix_memalign(&oneMegaBuffer, alignment, ONE_MEGA) != 0) { + fprintf(stderr, "Could not allocate the 1 Mega Buffer for initializing files\n"); + pthread_mutex_unlock(&oneMegaMutex); + return -1; + } + memset(oneMegaBuffer, 0, ONE_MEGA); + } + + pthread_mutex_unlock(&oneMegaMutex); + + return 0; + +} + + jint JNI_OnLoad(JavaVM* vm, void* reserved) { JNIEnv* env; if ((*vm)->GetEnv(vm, (void**) &env, JNI_VERSION_1_6) != JNI_OK) { return JNI_ERR; } else { - if (posix_memalign(&oneMegaBuffer, 512, ONE_MEGA) != 0) - { - fprintf(stderr, "Could not allocate the 1 Mega Buffer for initializing files\n"); - return JNI_ERR; - } - memset(oneMegaBuffer, 0, ONE_MEGA); + int res = pthread_mutex_init(&oneMegaMutex, 0); + if (res) { + fprintf(stderr, "could not initialize mutex on on_load, %d", res); + return JNI_ERR; + } sprintf (dumbPath, "%s/artemisJLHandler_XXXXXX", P_tmpdir); dumbWriteHandler = mkstemp (dumbPath); @@ -228,7 +250,12 @@ void JNI_OnUnload(JavaVM* vm, void* reserved) { } else { closeDumbHandlers(); - free(oneMegaBuffer); + if (oneMegaBuffer != 0) { + free(oneMegaBuffer); + oneMegaBuffer = 0; + } + + pthread_mutex_destroy(&oneMegaMutex); // delete global references so the GC can collect them if (runtimeExceptionClass != NULL) { @@ -782,7 +809,7 @@ JNIEXPORT void JNICALL Java_org_apache_activemq_artemis_jlibaio_LibaioContext_fa } JNIEXPORT void JNICALL Java_org_apache_activemq_artemis_jlibaio_LibaioContext_fill - (JNIEnv * env, jclass clazz, jint fd, jlong size) + (JNIEnv * env, jclass clazz, jint fd, jint alignment, jlong size) { int i; @@ -790,14 +817,20 @@ JNIEXPORT void JNICALL Java_org_apache_activemq_artemis_jlibaio_LibaioContext_fi int rest = size % ONE_MEGA; #ifdef DEBUG - fprintf (stderr, "blocks = %d, rest=%d\n", blocks, rest); + fprintf (stdout, "calling fill ... blocks = %d, rest=%d, alignment=%d\n", blocks, rest, alignment); #endif + + verifyBuffer(alignment); + lseek (fd, 0, SEEK_SET); for (i = 0; i < blocks; i++) { if (write(fd, oneMegaBuffer, ONE_MEGA) < 0) { + #ifdef DEBUG + fprintf (stdout, "Errno is %d\n", errno); + #endif throwIOException(env, "Cannot initialize file"); return; } @@ -807,7 +840,10 @@ JNIEXPORT void JNICALL Java_org_apache_activemq_artemis_jlibaio_LibaioContext_fi { if (write(fd, oneMegaBuffer, rest) < 0) { - throwIOException(env, "Cannot initialize file"); + #ifdef DEBUG + fprintf (stdout, "Errno is %d\n", errno); + #endif + throwIOException(env, "Cannot initialize file with final rest"); return; } } diff --git a/artemis-native/src/main/java/org/apache/activemq/artemis/jlibaio/LibaioContext.java b/artemis-native/src/main/java/org/apache/activemq/artemis/jlibaio/LibaioContext.java index cdaea559637..77de8f6d855 100644 --- a/artemis-native/src/main/java/org/apache/activemq/artemis/jlibaio/LibaioContext.java +++ b/artemis-native/src/main/java/org/apache/activemq/artemis/jlibaio/LibaioContext.java @@ -49,7 +49,7 @@ public class LibaioContext implements Closeable { *
* Or else the native module won't be loaded because of version mismatches */ - private static final int EXPECTED_NATIVE_VERSION = 7; + private static final int EXPECTED_NATIVE_VERSION = 8; private static boolean loaded = false; @@ -460,7 +460,7 @@ public static int getBlockSize(File path) { static native void fallocate(int fd, long size); - static native void fill(int fd, long size); + static native void fill(int fd, int alignment, long size); static native void writeInternal(int fd, long position, long size, ByteBuffer bufferWrite) throws IOException; } diff --git a/artemis-native/src/main/java/org/apache/activemq/artemis/jlibaio/LibaioFile.java b/artemis-native/src/main/java/org/apache/activemq/artemis/jlibaio/LibaioFile.java index dc8644966ca..a70751dae74 100644 --- a/artemis-native/src/main/java/org/apache/activemq/artemis/jlibaio/LibaioFile.java +++ b/artemis-native/src/main/java/org/apache/activemq/artemis/jlibaio/LibaioFile.java @@ -108,7 +108,7 @@ public void read(long position, int size, ByteBuffer buffer, Callback callback) * @return the buffer allocated. */ public ByteBuffer newBuffer(int size) { - return LibaioContext.newAlignedBuffer(size, 512); + return LibaioContext.newAlignedBuffer(size, 4 * 1024); } /** @@ -116,9 +116,9 @@ public ByteBuffer newBuffer(int size) { * * @param size number of bytes to be filled on the file */ - public void fill(long size) { + public void fill(int alignment, long size) { try { - LibaioContext.fill(fd, size); + LibaioContext.fill(fd, alignment, size); } catch (OutOfMemoryError e) { NativeLogger.LOGGER.debug("Didn't have enough memory to allocate " + size + " bytes in memory, using simple fallocate"); LibaioContext.fallocate(fd, size); diff --git a/artemis-native/src/test/java/org/apache/activemq/artemis/jlibaio/test/LibaioTest.java b/artemis-native/src/test/java/org/apache/activemq/artemis/jlibaio/test/LibaioTest.java index 10139660daa..922df372f51 100644 --- a/artemis-native/src/test/java/org/apache/activemq/artemis/jlibaio/test/LibaioTest.java +++ b/artemis-native/src/test/java/org/apache/activemq/artemis/jlibaio/test/LibaioTest.java @@ -136,7 +136,7 @@ private void testInit(int size) throws IOException { buffer.position(0); LibaioFile fileDescriptor2 = control.openFile(temporaryFolder.newFile("test2.bin"), true); - fileDescriptor2.fill(size); + fileDescriptor2.fill(fileDescriptor.getBlockSize(), size); fileDescriptor2.read(0, size, buffer, new TestInfo()); control.poll(callbacks, 1, 1); @@ -149,12 +149,12 @@ private void testInit(int size) throws IOException { @Test public void testInitAndFallocate10K() throws Exception { - testInit(10 * 1024); + testInit(10 * 4096); } @Test public void testInitAndFallocate20K() throws Exception { - testInit(20 * 1024); + testInit(20 * 4096); } @Test @@ -168,18 +168,18 @@ public void testSubmitWriteOnTwoFiles() throws Exception { LibaioFile[] fileDescriptor = new LibaioFile[]{control.openFile(file1, true), control.openFile(file2, true)}; - Assert.assertEquals((LIBAIO_QUEUE_SIZE / 2) * 512, fileDescriptor[0].getSize()); - Assert.assertEquals((LIBAIO_QUEUE_SIZE / 2) * 512, fileDescriptor[1].getSize()); + Assert.assertEquals((LIBAIO_QUEUE_SIZE / 2) * 4096, fileDescriptor[0].getSize()); + Assert.assertEquals((LIBAIO_QUEUE_SIZE / 2) * 4096, fileDescriptor[1].getSize()); Assert.assertEquals(fileDescriptor[0].getBlockSize(), fileDescriptor[1].getBlockSize()); Assert.assertEquals(LibaioContext.getBlockSize(temporaryFolder.getRoot()), LibaioContext.getBlockSize(file1)); Assert.assertEquals(LibaioContext.getBlockSize(file1), LibaioContext.getBlockSize(file2)); System.out.println("blockSize = " + fileDescriptor[0].getBlockSize()); System.out.println("blockSize /tmp= " + LibaioContext.getBlockSize("/tmp")); - ByteBuffer buffer = LibaioContext.newAlignedBuffer(512, 512); + ByteBuffer buffer = LibaioContext.newAlignedBuffer(4096, 4096); try { - for (int i = 0; i < 512; i++) { + for (int i = 0; i < 4096; i++) { buffer.put((byte) 'a'); } @@ -188,7 +188,7 @@ public void testSubmitWriteOnTwoFiles() throws Exception { for (int i = 0; i < LIBAIO_QUEUE_SIZE / 2; i++) { for (LibaioFile file : fileDescriptor) { - file.write(i * 512, 512, buffer, callback); + file.write(i * 4096, 4096, buffer, callback); } } @@ -199,15 +199,15 @@ public void testSubmitWriteOnTwoFiles() throws Exception { } for (LibaioFile file : fileDescriptor) { - ByteBuffer bigbuffer = LibaioContext.newAlignedBuffer(512 * 25, 512); - file.read(0, 512 * 25, bigbuffer, callback); + ByteBuffer bigbuffer = LibaioContext.newAlignedBuffer(4096 * 25, 4096); + file.read(0, 4096 * 25, bigbuffer, callback); Assert.assertEquals(1, control.poll(callbacks, 1, LIBAIO_QUEUE_SIZE)); for (Object returnedCallback : callbacks) { Assert.assertSame(returnedCallback, callback); } - for (int i = 0; i < 512 * 25; i++) { + for (int i = 0; i < 4096 * 25; i++) { Assert.assertEquals((byte) 'a', bigbuffer.get()); } @@ -228,17 +228,17 @@ public void testSubmitWriteAndRead() throws Exception { LibaioFile fileDescriptor = control.openFile(temporaryFolder.newFile("test.bin"), true); - // ByteBuffer buffer = ByteBuffer.allocateDirect(512); - ByteBuffer buffer = LibaioContext.newAlignedBuffer(512, 512); + // ByteBuffer buffer = ByteBuffer.allocateDirect(4096); + ByteBuffer buffer = LibaioContext.newAlignedBuffer(4096, 4096); try { - for (int i = 0; i < 512; i++) { + for (int i = 0; i < 4096; i++) { buffer.put((byte) 'a'); } buffer.rewind(); - fileDescriptor.write(0, 512, buffer, callback); + fileDescriptor.write(0, 4096, buffer, callback); int retValue = control.poll(callbacks, 1, LIBAIO_QUEUE_SIZE); Assert.assertEquals(1, retValue); @@ -247,23 +247,23 @@ public void testSubmitWriteAndRead() throws Exception { LibaioContext.freeBuffer(buffer); - buffer = LibaioContext.newAlignedBuffer(512, 512); + buffer = LibaioContext.newAlignedBuffer(4096, 4096); - for (int i = 0; i < 512; i++) { + for (int i = 0; i < 4096; i++) { buffer.put((byte) 'B'); } - fileDescriptor.write(0, 512, buffer, null); + fileDescriptor.write(0, 4096, buffer, null); Assert.assertEquals(1, control.poll(callbacks, 1, LIBAIO_QUEUE_SIZE)); buffer.rewind(); - fileDescriptor.read(0, 512, buffer, null); + fileDescriptor.read(0, 4096, buffer, null); Assert.assertEquals(1, control.poll(callbacks, 1, LIBAIO_QUEUE_SIZE)); - for (int i = 0; i < 512; i++) { + for (int i = 0; i < 4096; i++) { Assert.assertEquals('B', buffer.get()); } } finally { @@ -343,9 +343,9 @@ public void testSubmitRead() throws Exception { LibaioFile fileDescriptor = control.openFile(file, true); - ByteBuffer buffer = LibaioContext.newAlignedBuffer(512, 512); + ByteBuffer buffer = LibaioContext.newAlignedBuffer(4096, 4096); - final int BUFFER_SIZE = 512; + final int BUFFER_SIZE = 4096; try { for (int i = 0; i < BUFFER_SIZE; i++) { buffer.put((byte) '@'); @@ -402,20 +402,20 @@ public void testInvalidWrite() throws Exception { System.out.println("Error:" + callbacks[0]); - buffer = fileDescriptor.newBuffer(512); - for (int i = 0; i < 512; i++) { + buffer = fileDescriptor.newBuffer(4096); + for (int i = 0; i < 4096; i++) { buffer.put((byte) 'z'); } callback = new TestInfo(); - fileDescriptor.write(0, 512, buffer, callback); + fileDescriptor.write(0, 4096, buffer, callback); Assert.assertEquals(1, control.poll(callbacks, 1, 1)); Assert.assertSame(callback, callbacks[0]); - fileDescriptor.write(5, 512, buffer, callback); + fileDescriptor.write(5, 4096, buffer, callback); Assert.assertEquals(1, control.poll(callbacks, 1, 1)); @@ -440,17 +440,17 @@ public void testLeaks() throws Exception { LibaioFile fileDescriptor = control.openFile(file, true); - ByteBuffer bufferWrite = LibaioContext.newAlignedBuffer(512, 512); + ByteBuffer bufferWrite = LibaioContext.newAlignedBuffer(4096, 4096); try { - for (int i = 0; i < 512; i++) { + for (int i = 0; i < 4096; i++) { bufferWrite.put((byte) 'B'); } for (int j = 0; j < LIBAIO_QUEUE_SIZE * 2; j++) { for (int i = 0; i < LIBAIO_QUEUE_SIZE; i++) { TestInfo countClass = new TestInfo(); - fileDescriptor.write(i * 512, 512, bufferWrite, countClass); + fileDescriptor.write(i * 4096, 4096, bufferWrite, countClass); } Assert.assertEquals(LIBAIO_QUEUE_SIZE, control.poll(callbacks, LIBAIO_QUEUE_SIZE, LIBAIO_QUEUE_SIZE)); @@ -482,7 +482,7 @@ public void testAlloc() throws Exception { File file = temporaryFolder.newFile("test.bin"); LibaioFile fileDescriptor = control.openFile(file, true); - fileDescriptor.fill(10 * 1024 * 1024); + fileDescriptor.fill(fileDescriptor.getBlockSize(),10 * 1024 * 1024); fileDescriptor.close(); } @@ -503,7 +503,7 @@ public void testReleaseNullBuffer() throws Exception { @Test public void testMemset() throws Exception { - ByteBuffer buffer = LibaioContext.newAlignedBuffer(512 * 8, 512); + ByteBuffer buffer = LibaioContext.newAlignedBuffer(4096 * 8, 4096); for (int i = 0; i < buffer.capacity(); i++) { buffer.put((byte) 'z'); @@ -566,20 +566,20 @@ public void testIOExceptionConditions() throws Exception { fileDescriptor = control.openFile(temporaryFolder.newFile(), true); - ByteBuffer buffer = fileDescriptor.newBuffer(512); + ByteBuffer buffer = fileDescriptor.newBuffer(4096); try { - for (int i = 0; i < 512; i++) { + for (int i = 0; i < 4096; i++) { buffer.put((byte) 'a'); } for (int i = 0; i < LIBAIO_QUEUE_SIZE; i++) { - fileDescriptor.write(i * 512, 512, buffer, new TestInfo()); + fileDescriptor.write(i * 4096, 4096, buffer, new TestInfo()); } boolean ex = false; try { - fileDescriptor.write(0, 512, buffer, new TestInfo()); + fileDescriptor.write(0, 4096, buffer, new TestInfo()); } catch (Exception e) { ex = true; } @@ -590,12 +590,12 @@ public void testIOExceptionConditions() throws Exception { Assert.assertEquals(LIBAIO_QUEUE_SIZE, control.poll(callbacks, LIBAIO_QUEUE_SIZE, LIBAIO_QUEUE_SIZE)); // it should be possible to write now after queue space being released - fileDescriptor.write(0, 512, buffer, new TestInfo()); + fileDescriptor.write(0, 4096, buffer, new TestInfo()); Assert.assertEquals(1, control.poll(callbacks, 1, 100)); TestInfo errorCallback = new TestInfo(); // odd positions will have failures through O_DIRECT - fileDescriptor.read(3, 512, buffer, errorCallback); + fileDescriptor.read(3, 4096, buffer, errorCallback); Assert.assertEquals(1, control.poll(callbacks, 1, 50)); Assert.assertTrue(callbacks[0].isError()); Assert.assertSame(errorCallback, (callbacks[0])); @@ -608,7 +608,7 @@ public void testIOExceptionConditions() throws Exception { exceptionThrown = false; try { - LibaioContext.newAlignedBuffer(300, 512); + LibaioContext.newAlignedBuffer(300, 4096); } catch (RuntimeException e) { exceptionThrown = true; } @@ -617,7 +617,7 @@ public void testIOExceptionConditions() throws Exception { exceptionThrown = false; try { - LibaioContext.newAlignedBuffer(-512, 512); + LibaioContext.newAlignedBuffer(-4096, 4096); } catch (RuntimeException e) { exceptionThrown = true; } @@ -646,7 +646,7 @@ public void run() { File file = temporaryFolder.newFile("sub-file.txt"); LibaioFile aioFile = blockedContext.openFile(file, true); - aioFile.fill(NUMBER_OF_BLOCKS * 512); + aioFile.fill(aioFile.getBlockSize(),NUMBER_OF_BLOCKS * 4096); final AtomicInteger errors = new AtomicInteger(0); @@ -665,16 +665,16 @@ public void done() { MyCallback callback = new MyCallback(); - ByteBuffer buffer = LibaioContext.newAlignedBuffer(512, 512); + ByteBuffer buffer = LibaioContext.newAlignedBuffer(4096, 4096); - for (int i = 0; i < 512; i++) { + for (int i = 0; i < 4096; i++) { buffer.put((byte) 'a'); } long start = System.currentTimeMillis(); for (int i = 0; i < NUMBER_OF_BLOCKS; i++) { - aioFile.write(i * 512, 512, buffer, callback); + aioFile.write(i * 4096, 4096, buffer, callback); } long end = System.currentTimeMillis(); @@ -689,8 +689,8 @@ public void done() { private void fillupFile(File file, int blocks) throws IOException { FileOutputStream fileOutputStream = new FileOutputStream(file); - byte[] bufferWrite = new byte[512]; - for (int i = 0; i < 512; i++) { + byte[] bufferWrite = new byte[4096]; + for (int i = 0; i < 4096; i++) { bufferWrite[i] = (byte) 0; } diff --git a/artemis-native/src/test/java/org/apache/activemq/artemis/jlibaio/test/OpenCloseContextTest.java b/artemis-native/src/test/java/org/apache/activemq/artemis/jlibaio/test/OpenCloseContextTest.java index b515663e186..1d345dd19c6 100644 --- a/artemis-native/src/test/java/org/apache/activemq/artemis/jlibaio/test/OpenCloseContextTest.java +++ b/artemis-native/src/test/java/org/apache/activemq/artemis/jlibaio/test/OpenCloseContextTest.java @@ -62,7 +62,7 @@ public void run() { }; t.start(); LibaioFile file = control.openFile(folder.newFile(), true); - file.fill(4 * 1024); + file.fill(file.getBlockSize(),4 * 1024); final CountDownLatch insideMethod = new CountDownLatch(1); final CountDownLatch awaitInside = new CountDownLatch(1); file.write(0, 512, buffer, new SubmitInfo() { @@ -120,7 +120,7 @@ public void run() { }; t.start(); LibaioFile file = control.openFile(folder.newFile(), true); - file.fill(4 * 1024); + file.fill(file.getBlockSize(), 4 * 1024); final CountDownLatch insideMethod = new CountDownLatch(1); final CountDownLatch awaitInside = new CountDownLatch(1); file.write(0, 512, buffer, new SubmitInfo() { diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/asyncio/AIOTestBase.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/asyncio/AIOTestBase.java index 25eccbc7bc8..bba3241ebd3 100644 --- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/asyncio/AIOTestBase.java +++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/asyncio/AIOTestBase.java @@ -68,7 +68,7 @@ protected void encodeBufer(final ByteBuffer buffer) { } protected void preAlloc(final LibaioFile controller, final long size) throws ActiveMQException { - controller.fill(size); + controller.fill(controller.getBlockSize(), size); } protected static class CountDownCallback implements IOCallback {