diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
index 1dff69d..486cd45 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
@@ -579,6 +579,8 @@
             if (!dsInfo.isMemoryAllocated() && !dsInfo.isExternal()) {
                 while (!memoryManager.allocate(datasetId)) {
                     if (!evictCandidateDataset()) {
+                        LOGGER.warn("failed to allocate memory for dataset {}. Currently allocated {}",
+                                dsInfo::getDatasetID, ((DatasetMemoryManager) memoryManager)::getState);
                         throw new HyracksDataException("Cannot allocate dataset " + dsInfo.getDatasetID()
                                 + " memory since memory budget would be exceeded.");
                     }
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
index 34d0774..1b4b48e 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
@@ -24,10 +24,15 @@
 import org.apache.asterix.common.api.IDatasetMemoryManager;
 import org.apache.asterix.common.config.StorageProperties;
 import org.apache.asterix.common.metadata.MetadataIndexImmutableProperties;
+import org.apache.hyracks.util.JSONUtil;
 import org.apache.hyracks.util.annotations.ThreadSafe;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
 @ThreadSafe
 public class DatasetMemoryManager implements IDatasetMemoryManager {
 
@@ -114,6 +119,14 @@
                 : storageProperties.getMemoryComponentNumPages();
     }
 
+    public JsonNode getState() {
+        final ObjectNode state = JSONUtil.createObject();
+        state.put("availableBudget", available);
+        state.set("allocated", budgetMapToJsonArray(allocatedMap));
+        state.set("reserved", budgetMapToJsonArray(reservedMap));
+        return state;
+    }
+
     private long getTotalSize(int datasetId) {
         return storageProperties.getMemoryComponentPageSize() * (long) getNumPages(datasetId);
     }
@@ -126,4 +139,15 @@
         final Long reserved = reservedMap.get(datasetId);
         allocatedMap.put(datasetId, reserved);
     }
+
+    private static ArrayNode budgetMapToJsonArray(Map<Integer, Long> memorytMap) {
+        final ArrayNode array = JSONUtil.createArray();
+        memorytMap.forEach((k, v) -> {
+            final ObjectNode dataset = JSONUtil.createObject();
+            dataset.put("datasetId", k);
+            dataset.put("budget", v);
+            array.add(dataset);
+        });
+        return array;
+    }
 }
\ No newline at end of file
