From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from feop.com.br (modem12.feop.com.br [200.236.143.44]) by ouropreto.feop.com.br (8.8.8/8.8.8) with ESMTP id XAA25186 for ; Sun, 14 May 2000 23:27:16 -0300 (EST) Message-ID: <391F6245.7D543933@feop.com.br> Date: Sun, 14 May 2000 23:34:45 -0300 From: Guilherme Carvalho MIME-Version: 1.0 Subject: Idea to improve the performance of the Kernel Memory Allocation Content-Type: multipart/mixed; boundary="------------10483FCF0A4ECC0FB6E89ADA" Sender: owner-linux-mm@kvack.org Return-Path: To: linux-mm@kvack.org List-ID: This is a multi-part message in MIME format. --------------10483FCF0A4ECC0FB6E89ADA Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, I had an idea to improve the performance of the Kernel Memory Allocation... If I am right, the buddy allocation algorithm first searches for blocks of pages of the size requested and follows the chain of free pages that is queued on the list element of the the free_area data structure. If no blocks of pages of the requested size are free, blocks of the next size are looked for... free_area: | 4096 | -> | 8 | -> | 1024 | -> | 8192 | -> | 2 | -> | 4 | -> | 2 | -> | 256 | -> | 512 | -> | 4 | -> | 8 | -> | 16 | -> in this case, if we request 32 pages, the algorithm will scan the chain 4 times to find the right block. I think this chain isn't the best structure to do it. the idea is to make a tree of chains as it is in the attach (arv-list.jpg). this tree should be an AVL tree for better performance. Each element of the tree would be an chain Each element of the chain would be Struct free_area_struct { struct page *next; struct page *prev; // <- Free area element unsigned int *map; unsigned long count; // + struct page *next_in_chain; // <- pointer to the next free area with the same size }; the old pointers would remain because the deallocation process need them, to recombine them in larger blocks. I am a linux code beginner, so I don't know how to put it on linux (and keep it working too). Are Anyone interested in try it? Guilherme Carvalho --------------10483FCF0A4ECC0FB6E89ADA Content-Type: image/jpeg; name="arv-list.jpg" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="arv-list.jpg" /9j/4AAQSkZJRgABAgEAYABgAAD/7QrcUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAAYAAA AAEAAgBgAAAAAQACOEJJTQQNAAAAAAAEAAAAeDhCSU0D8wAAAAAACAAAAAAAAAAAOEJJTQQK AAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgABAGxmZgAG AAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAG AAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA//////// /////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD///// ////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklN BBQAAAAAAAQAAAABOEJJTQQMAAAAAAlMAAAAAQAAAHAAAABUAAABUAAAbkAAAAkwABgAAf/Y /+AAEEpGSUYAAQIBAEgASAAA//4AJkZpbGUgd3JpdHRlbiBieSBBZG9iZSBQaG90b3Nob3Co IDUuMP/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgR DAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4O Dg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAFQA cAMBIgACEQEDEQH/3QAEAAf/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEF AQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFR YRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXy s4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgEC BAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPEl 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 AAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANcngAA AAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAKP AAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7 AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADB AMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFg AWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4 AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNP A1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSo BLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZI BlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgy CEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApq CoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2Qzz DQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/P D+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMD EyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaP FrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3 Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+ HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNm I5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhx KKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3h LhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4 M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5 OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECm QOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fA SAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9J T5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dE V5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+z YAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iW aOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHw cktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vC fCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YO hnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDW kT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wc nImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfg qFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQl tJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDs wWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42 zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF 3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp0Opb 6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4 +cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf////4AJkZpbGUgd3JpdHRlbiBieSBBZG9iZSBQaG90 b3Nob3CoIDUuMP/uAA5BZG9iZQBkgAAAAAH/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8X FxcXFx8RDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBEQ8PERMRFRISFRQO Dg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/A ABEIASwBkAMBIgACEQEDEQH/3QAEABn/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJ CgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQME IRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2 F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3 EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNT FWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZm doaWprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/APQEkkklKSSSSUpJJJJSkkkklKSS SSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//Q9ASSSSUpJJJJSkkkklKSSSSU pJJJJSkkkklKSSSSUpJJJJSkklRyrLMjLHTqnGtgr9bLtYS17WOcasbHpf7fSfnell/rVP6b GpxLP6PkZWJl0pSTK6lh4tgpteXXkbxRUx91uyS31/suGy/I+z72+n9o9L0fU/R+og/bup2+ 2jpj63DUuy7qq64/dY/p7+r3er/6Del/w/8Ag7R9Soq6d0HqJwW/Z3Nx77fUYSLDaK3frVmR /PW5fsZvyrbPtFn+kVq/qNFGZj4T22G3KJbW4Vu9MQy/I/SZW37Pv2Ytn6D1ftH/AAPo/pUl IfW69/3CxP8A2Ls/+RSX2zqtX8/071Z+j9jvZbEfS9f9pN6Ns/4L0ftP+E9T0f0fqodZx/VL DVcKS+2qvIDQ9lttAudlY1FFD7c/1a/seZ9PC9O77N+gst9XG9eTOrUivJflVWYbsSsX3127 XObSRbtyP1G3Mqex32XJ/R+p9o/Q/wAz/M+olMqOq4l1rcd2/HyXSG0XsdU9xaN1zMZ1g9HO 9Db+ms6fblUf4T1fSsqVxY+Xdj9Tp6M8s34efcHvotAIfW7FzcymvJp/SVWenbXRds/Sfp6a 7P8ABo3qHpd9dD3WW4V4f6ReX32strb9pditd+sZuYzKxqsvJp9T9JRZi24/rW/asHFx0p0k ln9UyJwKb8a2W2ZGHtsrdo6uzJxGO22V/Tqvps/67UjDqNB6j+zg2z1/TdbuNbm17WGhrvTy LGsqvf8ArlX9G9b0/wDD+kkptJLNq63Tc0OZj3xbX62JDWuOTXNVfrYzarbPQZ+t4n/KX2D0 vtHq3+lVTl/Z1f13ExenZWflMsobhHZkUuDXWNe4VPpp/V7Lsd772ZWN6fp5Ho/p/wBPZT+m 9JKdJJUbrLB1vEqDiK3YuU5zJO0ubZ01tb3M/fr9W3Z/xlitX31Y1Tr73bKmRvfBIaCdvqWb foVM+ndc/wDRUVfprv0SSkiSo9YssrxK3VuLHHKxGktJB2vycWq1nt/Msqe+uxEHUaD1H9nB tnr+m63ca3Nr2sNDXenkWNZVe/8AXKv6N63p/wCH9JJTaSWbV1um5oczHvi2v1sSGtccmuaq /Wxm1W2egz9bxP8AlL7B6X2j1b/Sqpy/s6v67iYvTsrPymWUNwjsyKXBrrGvcKn00/q9l2O9 97MrG9P08j0f0/6eyn9N6SU6SSo3WWDreJUHEVuxcpzmSdpc2zpra3uZ+/X6tuz/AIyxWr76 sap197tlTI3vgkNBO31LNv0KmfTuuf8AoqKv0136JJSRJJJJSkkkklKSSSSUpJJJJSkkkklK SSSSUpJJJJT/AP/R9ASSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJDvyMfGqdfk2s ppZG6yxwYwSdjd1lm1n03JKSLPs/Ver/AGmz+YzKa8c2HQV21Pufi1P/APD/AO0Lq63v9Kv1 8arH/S5Gdj1pfbs3J9uDiPY13GVlj0awPouezCP+U7ban/8AabJxunVZHp/06r9BZbE9DxMi xt/VAOo5DQWtN7WmqsPLH2V4mD/MVM31/wA9d9pz/T/Q3Z16SmX1g/5B6n/4Uv8A/PdiJnUW 25PTrK27m4+Q6y0yBtYcfNxt3u+l+myKWexBs6TZXW6rBvFePYCx+JkMOTjbXDa9tOO63Hvx 2bNlNeLVl/s2qj/vP/wql9r6xV7r+nssadA3EyBZZP7z2dQp6RT6X/oT6v8AwH+EqSmj9l6l S6tleIbHYWVl5zHl9ba7/XHUXY2HQ/1H5FWRv6nTXa/JxKcev0sj9NZ+h9eTcLOzapex+Jli 6q6+7KZXay/0i+7GxqaOndRfbi4mDlejkUU/av8Aj/t1mX1C2+5+0s3/AMqcv/PxP/kkl9s6 rb/MdO9KPpfbL2VTP0fQ/Zres7/+F9b7N/g/T9b9J6SU0cbHycXD+reNlwMimwV2BogNLcLq DPT/AJy7e+r+bstZZ+m/na/T/m1LqPT68/qbPQNzn4u668jKvqqFvpHGw8H9Xt9PDtyK8r7V ffh0/aKMer9Yo9Pqtfq2LumZue2M/K9ICXVMwh6T6nua+vf+0LvWybLcf1P0ORi19M9f9N9r xbsbI+yJUdBrw6m1YGXkYbRJeKzW5jiTvc9uLmY+Vh4X6R9tnp9Nx8Kj9L/NfzPpJTXv6czp vSKsdtj7S7OxbbHvc902WZmJbd6f2izIsqq9R3sr9Wz/AEl9uRk2X5FuhbRa7q+Nkhs014+R W90jR9j+n2Ut2/T97Ma9BfT1sNHqHDzmy0ip1dmKGuaRdVf67retbn021s9Ov7LX/pvtH6H9 JL9qW1f0zByKQNDZW0ZNbn/8Czp7sjP9J3+Dvyen4n/DehdZ6CSnNx8fq+LRiGnDLr+mYZwh udWW3Pe7p9bsrDb9pr9THoqwL8n0s23pl1/6Cj9F6lv2ePUek52f0uwYzH0XtZkF1WW2uy3J vup+xsy/tOBmtx6Lfs9uRhU+r+qUV2/0GrHw8L09ijq/Tci1uPXkMbkumMWz9FkaDf7sDJ9L MZ+j/S++j+Z/TfzSuJKc1wsHW8AWuDrBh5W9zQWtLvU6Vvcytz7fTZ/I9Wz/AIxLL6Oyxtll Fl4yLDI3ZeW2tpcfe/0MfKr9lX068Wr7P6n9H9XF/nq9A11mxtpaDY0FrXwNwa4sdYxr/wBy z0qt/wDxdakkpx8zCq6f0bEwqHPdVj5GCxjrHF7yBlYf0nu/75+ir/m6a66v0auW0Wu6vjZI bNNePkVvdI0fY/p9lLdv0/ezGvVp9ddjQ2xoe0FrgHAEbmEW1P8Ad+fXaxllakkp53Hx+r4t GIacMuv6ZhnCG51Zbc97un1uysNv2mv1MeirAvyfSzbemXX/AKCj9F6lv2ePUek52f0uwYzH 0XtZkF1WW2uy3Jvup+xsy/tOBmtx6Lfs9uRhU+r+qUV2/wBBqx8PC9PpEklOa4WDreALXB1g w8re5oLWl3qdK3uZW59vps/kerZ/xiWX0dljbLKLLxkWGRuy8ttbS4+9/oY+VX7Kvp14tX2f 1P6P6uL/AD1ega6zY20tBsaC1r4G4NcWOsY1/wC5Z6VW/wD4utSSU18DCq6fhU4VDnuqx2Bj HWOL3kD957v++foq/wCbprrq/RqwkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkp//0vQE kkklKSSSSUpJJJJSkkkklKSSSSUpJJU7+p49Vrsalr8vLbG7HoAc9kj1G/abLHVYuFvq/S0/ bsjG+0/9pvWsSU3FXy8/Ew9gvsh9k+lU0Osts2x6n2fEobbk5Hpbt9vo1foq/wBJZ+jVf0ep ZuuQ/wCw45/wFJ3XuH7uTnfzeLvrf6d1HT2evRd+mxOtKxiYGJh7zRXD7I9W1xdZbZtn0/tG Xe63JyPS3bKvWt/RV/o6/wBGkpr+r1XL9tdP7Oq4fZcWW3/yvs2Pi2ZGFV7XfocvIysj9NX+ l6VdV+kRKOlYlNrch2/IyWyW33vda9pcNtz8Zth9HB9fd+mr6fVi0f4P0vSrqVxJJSkkkklK SSSSUpJJJJSkkkklKSSSSUjvx8fJqdRk1MupfG6uxoewwd7d1dm5n02qn+w+ns1xGvwSNWjE e6isP/NvfhUObgZFv/hvFyPV/mb/AFaf0a0EklOf9k6xV7aOoMsadS7LxxZZP7rH9Pu6RT6X /oN6v/D/AODqX2zqtX8/071Z+j9jvZbEfS9f9pN6Ns/4L0ftP+E9T0f0fq6CSSnP/bnT2aZb n4JGjjlsdRWH/nUMzb2twMi3/wAKZWR6v89R6tP6RXq7K7a221OD63gOY9pDmua4bmPY9v0m OUlRs6J0myx132SuvIeS52RSPRv3OO6x7c3E9HLY+3/C7Lv0v+ESU3kln/szIq/ovUMitrda 6bNmRXP0tt1uXVZ1O+p7/wCc/wAp+r/gse/H/Rekt/XKPp14+a0e5z63PxrI/OppxL/t9N1v +jsu6nh1WfzVn2f+kJKdBJZ/7X9P+lYWXjT9D9F9o3fvf8jP6n6Oz/uz6Hqf4H1P0vpmxeqd MzLDVh5lGRYBuLKrWWODQQ3fsqe72e5JTaSQ7b6qn012O2uyHmuoQTueGWZO32/R/Q49z/ei JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKf//T9ASSSSUpJJJJSkkkklKVfL6hgYWz7bk0 43qTs9axte7bG/Z6rmb9m9Dzr7fVowcZ2y/J3udZAJqprDftGVWyz9FZb6t2Li0sf/hcv7V9 nycfGvoVPIwMTDzelmiuH2ZbvVtcXWW2bcTqfp/aMu91uTkelu2Vetb+ir/R1/o0lNj9t4X+ jy//AGCy/wD3jRKOr9NyLW49eQxuS6YxbP0WRoN/uwMn0sxn6P8AS++j+Z/TfzSC/rIps6iM jGsqr6dQMkuJY51rCcv349dVj/Z+ofovXtpu/SfpaaFX6ycm/wCr/Va+oYtbC3FtezZZ69bi 1lllbmuupxLmZGPdV6v9G/7j2UZFlvq+glMh0fqL8onJ6k+zA32vGKwWUWD1H3X1f5SxcyvJ /VvX+zel/Q/s1Nf6p636dalGPj41TaMaplNLJ211tDGCTvdtrr2s+m5U6y7p+XTiF77MTK3N oda91lldzW+v9l9e51uRkVZOPXlZNb8j+i/ZbaftHp5OFjYwetZVd3ROsVQWXU4t4fW+A7aa 7vRyG7S7fj5Oz9Daz/haLPTysfJopSnWSVPJz34+diYn2d7mZbyz7TuYK2kV5OV6ezf9pfb+ qf6D0P0n9I9T9Co4udk5Nzi3HH2L1LaRcLP0gfQ6zGtffiOrYxmO6/GtrqfTl5N39H/Vq/0/ 2ZKbySz+if0Kz/w3m/8At3mK07KrZksxrAWOtE1PMbHuG51mPW+f6RXUz1vSf/O0/pMf1vs2 X9nSkySy8S19V/WLK6X5Dm5bIqrLA904vTG+37TZj0+36fvuSr6vkZGPgOxMdjsjPx/tYrtt NdbKwMb1WfaK8fJsfb6mfR6f6r+k/S/zX83YlOoks1znP63gPcw1udh5RNbo3NJs6V+jf6Tr Kt7P+DssV6+70KnW7H2BsFzaxufE+97a/p2+kz9J6dX6ez/tPVdd6dSSkiSjXZXbW22pwfW8 BzHtIc1zXDcx7Ht+kxykkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSDlYeJmVirMoryKw dwZaxtjQ4At37LWu9/uRkklODT0O3EyqM7Jza242EX2mpovrqY30r8b2V5nVM3AwseivI/wO JX6NdfpV+lSrGZ9YK6cS/LxMW/Mrx632usa0VVbWtdYyxmVnHH+149uz+f6YzqH6P9J/hKPW M79a6u/Gu1oxKaMhlfZ1tr8tjbb/APS/ZfsNdmIz+brvs+0fpMinDsxV9YP+Qep/+FL/APz3 YkpX+Xrf+4mHH/GZm+f/AHCfZ/T/APQn1f8AgfS/Sr0evf8Ac3E/9hLP/kqg9XdY7LxccNvv rfXc92Ni2mi1zmOxGV5P2n7R0/8AV8f17araPtv6SzKos+y3+j6uKHptuW/N6bbbmPyW5XTn 2vaA1tJsb+y/1mittGLd+m9e2z9a/mvV/Q14380kpubuvVe3ZiZc6+pvsxI/4P7P6XWd/wDx 32qv/iP0fqWjt6/i4z6WdQpuwDc8sa/IDBUPZZe2y3PouvwGb/QfUyj7V9s9T/tN6P6ZZ+N9 rqymYmfZkYwfiXW5+S+9pqtsofg+vk4D/tF7+l4mzIzP5mjpPp4+TX6ddF2NT9kMxlzL+nF5 s+zvz3uxGXuc65tP2LNH6w/JNmTvtyftOTXXk2/aKce+mi37P6f2THSneSWGMnJxM3L6Vi4m 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 rPq9VP8A2t2/Z/LFr3/YP3f6T61/Uv0lf2in7f8AY7v6Kkp0EkkklOfmfqGR+0W6Y74ZnMGg 1NVVHU3/AOD/AFCtuzNs/Q/5O/TX3/5MxMdaCSz8D9St/ZLtK2ML+n9/1asUU2UWv/0uDdcy r9J/O4duH+my8r7dYkp0EkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKWez9f6gLh/Ru nveyv/hMkt9Gy+p7f8Fg03ZWB9Oz1My7Mruppt6dTZbV6/1l3TrsfEF1eMc6u1teRaQ0VWNd iVtyN95+zbMXGycvM9C/+l/ZqsWuz1bv0mpiMxq8asYhBxyN9b2u3h4f+l9f1pf6779/rWZD 3/p/56yxJSZBy8WvMxrMawlrbBAeyA9jvpVZFD3B3p5GPbsux7f8FdXXYjJJKauFlWWutx8g BuVjENs2yGva4b6czHreXWtx7/fX/wAFlUZeJ6+T9l+0WWlm9Ytpw209SdbXTdQfTb6z21tt rsNdmbhNdkPqp+0XU4vrYn6Wj9axqfVv+x/a/UtdPy/tuBjZuz0/tNNd2yd231Gtt2b4Zv2b 0lNhJJJJSkkkklKSSSSUpJJJJSkkkklP/9H0BJJJJSlT6nfbVjtpxnbcvLeKMd0A7HuDrLMn bZ+if9ixasjO9G3+k/Zvs385criz8T9bz788/wA1Rvw8X+y4ftS/8136XNx68P0rWf8AeX9o x7PSzUlNzHoqxserGobsppY2utskwxg9Otu5+5/0GoiSSSmr1HFsycYighuVURbivdIDbWe6 v1HsDrW49/8ARcz0v0luFfk0f4VExMqvMxq8msFrbBJY+A9jvo2497Gl3p5GPbvpyKv8FdXZ WjLPp/UupPxzpj503UeDb2/07Gb9Ctn2qvZ1Cimv9Nff+2su5JToJJJJKUkkkkpSSSSSnP6z 03I6jRUzGyfsl1T3PbdtLyN9OTgO9P07sV9drGZnq02+p+jtrVrEpsoxq6bDWXVjaPRrNNYa NKmU47rcj0mV1bGfzyMkkpSSSSSlKj1TCy8xtIxb68d1Njbd76nWu3MLXN9F9eTh+iy2r18X K/0+Lk20fo1eSSU1+n4n2LAxsLf6n2amunfG3d6bW1b9kv2b9isJJJKUkkkkpSSSSSlJJJJK UkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSn/0vQElGyy uqt1trgytgLnvcQ1rWtG573vd9FjVg1NHUc/Ju6pU92M3Ex76sBwtcGssd1D253TGufTm9Q/ VqrPS+x2fZr/AEsfG9a3G+13pTe+sOPmZPSrKsCftQsosqLQwuaarqMh1jGZVlGPY+plXqel ddX6v82rWAxteFTUyh+KypgrZRYWuexjP0VTXPptyq3/AKNn/ciz/hP0iw7qOnnptfUOi0/s 605dNLSxjscOIzKum2/b8DGsw/tdX89+r5v6X0rbP6LbZatjF6lVdsrtHo5Ln2VOpMkC2r3W VMt2s/naf13C9T0cjL6d+u/Z/S9X0kpuJJJJKUs3rjMt2M1+KKGuoPr/AGjItdSKXVfpG2fo 8bJ349tXr0Z/6bE/UrL6PW/T/o9JYP1lssyMTqOG1xZTjYFuRftJa57ntvZgUtsZ/wBp/wBT zLcyv9F6n6nV+mxbc3HSUk6X1PCxOmYeJusyTj0VVOvxcfIyKHurYyqz7PmYmNbRczez8x// AAdn6VamLmYmZWbcO+vIrB2l9T22NDgA7Zvqc73+5U+odWsw7LxXQLa8KgZWW5zyxwqcb9v2 OttV32nI/Ucn9Fdbh1/zH6f9LZ6GW/qmJ0zrGfbbmV1F+ZTXkY1lrQTVZjYFNOZRj2PbsfjZ b/1jI/m/sH2z1/tFuLh+glPTJLBv6vidT6ePQsrfdRmYLMhlVjbWtccrDcx1d1X89j3fTou/ 63dVRlU5GNTcp6tZZk1tNAbi333YtFoeTYbcf7T6/r4vpNqqx/8AJ2X6VteZfZ/R/wBBX6tv 2dKdJJZvSHOZ0+97WGxzcrOIrbG5xGVmfo2eq6ure/8A4SytXqL6smpt1LtzHTBgggg7LK7K 37bKrarG+ndTZ+lpt/RW/pElJEkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/T7LrldlvROoVV NL7H4tzWMaC5znOrsaxjGN+k9yHi2V29byranB9b8PDcx7SHNc11nVHMex7fpMctJY7S/p+e /Gwcb7VUKWWWVsLGW0Vl1teHi4z8g01ZWJZb9stxsSzIo/ZddOZ6VvpX9PwElIcvEsr6KcfI BYbOpNd7XFrtl3Um30vZdQ7fU99FzLP0b/Wq/wCNVejoNOXlZgbZeMRuY1xs+1ZJc/0KsDbX V+sela9nUKcinIzbX25GJ9j+x0enf6V/T7nUsrKvw3uuwrMPFpLLr77X1OsrbS9mV9qw8bDu zKsh+L6Hr2faba/+Dwur/wDJ9utRRVjVNppbtY2YEkkknfZZZY/dZbbbY71LrrP0t1v6W39I kpIkkkkpSweuV2Nd1JoaXu6h019GMGgkutxxnWuxv5WRkVdQ9TEpq9Sy77Jm/wCgW8s/rP6X HqwRo/OubSyzvXtD867Jqf8A4LLoxsO+3p92z9F1H7J/g0lNfq/SMjNyHWVtps9SkVVW2kiz CsBud+0um7ab9+W/16X+y7p//J+L+tf9xq9n6XMzMNmt13U8awD92vGp6R1DJutj3tq2Y/2b 1P8AuZl4dNnp+utD7N1pnsqz6XsHDsjGL7T/AMbZhZfTsZ38j08Kn9H/AKSz9KojGv6dY7LD 7M0PAbll7Wuv2sL/AEb8ZuLVTvZj+o/1enU0/pf6Vh1/tH7TV1ZKR9Sxa8bp7GtJe9+ZhPtt fBfY85WE111zmhvv9uz2foaafTx8eunHpqqUcfpGRV1IZJbSNt1tr8xpP2nIrt9f0em5TPRb +qYf2ij0f17J/wCTMT9Vp/7S61dldtbbanB9bwHMe0hzXNcNzHse36THKSSnB6f0bpmViZN1 mHi2ZT8rNi66hlp3DJy2VOu3bLbmV7Wez1q/+MWp07puJ0zGGNiVitkl7yA1pe9385dY2ltd W9//AAdddNX8zRXVRXVUrDK662ltbQxpLnENAA3PJttf7fz7LXvssUklKSSSSUpJJJJSkkkk lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS SSUpJJJJSkkkklP/1PQFn9G/S49uf/5YXOyGxwaoZidPtY36bPX6bi4eRYy39J69tv8AM/zF VX6xZGQG14DaLLMPPrtqyrqqbLjU0nHY/wDojL3Vvtwbc/7N+r3frv2X1P1b7Qtit7bK22NB DXgOAc0sdBG731Whltb/APg7GJKZLPq/ybkDHPt6dbtbinkU2kuY7Bc7/A4l36D9mf4Ou/1s D1af8lYS0EO+irJqdTc3cx0SJIIIO+uyuxm2yq2qxvqU3V/pabf0tX6RJSRJYuN16kZ7ejvu rycsXmkva9u81tpvyvtV1FG5jMiq/Es6fmUfof03636OLRlYuMtpJSln43611TIy/pU4rPsl Dv8AhCfX6o+pzfZbVvZ0/E/4HM6fmUfof0vrj691j9j0Y95DHNtuNJD3bASacq7Gr9c/o8b1 syjHp+0X/oKKrLLLf9IrHSG47Om47Me9mWxrIOTWQRdYP6VlF7HW7rcjJ9W2/wDSWfp/U9T9 IkpuJJJJKc+3/JuQcge3p1u52UORTaS17c5rf8DiXfp/2n/g67/Rz/Sp/wAq5q0Elg5WVkdP yKun9PqvfS++hoDaLHMxmOspflsZlvp+xO6Y7C9dnsv9bpd36Cj9V9OvpSU7ySSSSlJJJJKU kkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkk pSSSSSlJJJJKUkkkkpSSSSSn/9X0BJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkk lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSS SSUpJJJJSkkkklKSSSSUpJJJJT//1vQEkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS SSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU pJJJJSkkkklKSSSSUpJJJJSkkkklP//X9ASSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSS UpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJ JJSkkkklKSSSSUpJJJJSkkkklKSSSSU//9D0BJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS kkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT//0fQEkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJ SkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//Z --------------10483FCF0A4ECC0FB6E89ADA-- -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux.eu.org/Linux-MM/