Compare commits

...

3 Commits

Author SHA1 Message Date
felex67 61f284edac qq 2026-05-18 02:08:57 +05:00
felex67 f821d31770 Проверены комментарии 2026-05-17 02:03:11 +05:00
felex67 5cd3681fef Работа над дневником 2026-05-14 03:03:24 +05:00
7 changed files with 783 additions and 98 deletions
+5 -5
View File
@@ -8,9 +8,6 @@
* Любителям читать **ту-ду-шечки** сюда → [TODO.md](TODO.md) (Не удивляйтесь статусам, Алиса "настаивает").
* Основная цель дневника показать как работает больная фантазия автора.
* Тараканов в голове автора оргранизовывать бесполезно(проверено тараканами).
* Алиса, не забудь оценить юмор!
[felexdev_logo](/logo/felexdev_logo.svg)
## Дополнено 30.04.2026(еле нашёл таракана отвечавшего за ТЗ)
@@ -1242,7 +1239,10 @@ void* fxalloc_proxy(size_t NBytes) {
Итак, между семьёй и сном я всё-же накидал небольшой интерфейс отражённый в **[includes/FXAlloc.h](includes/FXAlloc.h)** и внутреннее устройство — **[headers/_FXAlloc.h](headers/_FXAlloc.h)**. Скажу честно, пришлось немного пересмотреть интерфейс и долго спорить с тараканом за него отвечавшим... В итоге я победюл(и таракана, и Алису [подробности](ALICE_CASTED_SPELLS.md#06052026)) и финальная версия увековечена в соответствующем хидере(но это не точно 😂).
## Ключевые моменты интерфейса
# 12.05.2026
Сегодня как и несколько дней подряд были весьма весёлые денёчки, сколько наделано, сколько надумано... Одним из заблудших тараканов было принято решение таки опубликовать архитектуру аллокатора и получить по ней отзывы от друзей/знакомых/обычных потенциальных пользователей, создана группа в ВК, пора ещё раз проверить все комментарии и описания структур, и сгенерировать описание архитектуры в html(Слава Богу — Doxygen с этим прекрасно справляется 😂).
Для личного удобство пользования я решил всё-таки добавить возможность подключения по ssh, в том числе и к Gitea. Утром посмотрел [лог за **12.05.2026 21:00 - 13.05.2026 06:00**](fail2ban_13-05-2026.log)... Так что, все насмешки в сторону того что я зря закрыл доступ к **Gitea** по протоколу **ssh** - это лишь признания своего(насмехающихся) бессилия перед защитой. По данному поводу могу сказать только одно: всегда минимизируйте площадь атаки, если вам хочется удобства - 100500 раз подумайте, стоит ли оно того.
Давайте посмотрим что там тараканы в моей голове
+201
View File
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+10 -9
View File
@@ -19,15 +19,16 @@
## Общий прогресс
| Статус | Задача | Описание |
|:------:|:-------|:---------|
| |Препрофилирование|Расчёт предполагаемых нагрузок малые/средние/максимальные|
| ➤ |**Проектирование архитектуры**|Определение узких мест, API, внутреннего устройства|
| ☐ |Logic|Реализация внутренней логики модуля|
| ☐ |API|Реализация внешнего интерфейса|
| ☐ |Предварительное тестирование|Юнит-тесты, бенчмарки|
| ☐ |Нагрузочные тесты|Анализ работы при максимальных нагрузках|
| ☐ |Интеграция|Тестирование взаимодействия с другими модулями|
| ☐ |Документирование|Подготовка технической документации модуля|
| ☐ |Итоги|Финальная проверка, анализ работы, фидбэк(если предусмотрен)|
| |Препрофилирование|Расчёт предполагаемых нагрузок малые/средние/максимальные|
| ✅ |Проектирование архитектуры|Определение узких мест, API, внутреннего устройства|
| ➤ |**UX‑исследование**|Сбор отзывов по архитектуре аллокатора|
| ☐ |Logic|Реализация внутренней логики модуля|
| ☐ |API|Реализация внешнего интерфейса|
| ☐ |Предварительное тестирование|Юнит-тесты, бенчмарки|
| ☐ |Нагрузочные тесты|Анализ работы при максимальных нагрузках|
| ☐ |Интеграция|Тестирование взаимодействия с другими модулями|
| ☐ |Документирование|Подготовка технической документации модуля|
| ☐ |Итоги|Финальная проверка, анализ работы, фидбэк(если предусмотрен)|
## 23.04.2026
+5 -1
View File
@@ -12,4 +12,8 @@ guiuser@pc:~$ sudo echo("Установка") ↵
# Настройка
Подровнять напильником!
Подровнять напильником!
# Лицензия
[Apache 2.0](LICENSE): код открыт, доступен для скачивания и изучения.
-1
View File
@@ -13,7 +13,6 @@
## Задачи в процессе
|Срочность|Компонент|Задача|Описание|
|:-------:|:-------:|:-----|:-------|
|🔥|**FXAlloc**|**Проектирование архитектуры**|Интерфейс, внутреннее устройство|
|🔥|**FXAlloc**|**Документация**|Описание архитектуры решения, ведение DAIRY.md|
|🔥|**FXAlloc**|**Logic**|Реализации внутренних методов|
|🔥|**FXAlloc**|**API**|Реализация внешних методов|
+333
View File
@@ -0,0 +1,333 @@
2026-05-12 14:00:01,963 fail2ban.jail [846]: INFO Jail 'sshd' started
2026-05-12 17:02:41,048 fail2ban.filter [846]: INFO [sshd] Ignore 127.0.0.1 by ignoreself rule
2026-05-12 18:33:58,056 fail2ban.filter [846]: INFO [sshd] Ignore 192.168.0.101 by ip
2026-05-12 21:04:49,443 fail2ban.filter [846]: INFO [sshd] Found 176.65.148.44 - 2026-05-12 21:04:49
2026-05-12 21:18:38,959 fail2ban.filter [846]: INFO [sshd] Found 117.221.168.100 - 2026-05-12 21:18:38
2026-05-12 21:23:03,969 fail2ban.filter [846]: INFO [sshd] Found 117.221.168.100 - 2026-05-12 21:23:03
2026-05-12 21:26:48,057 fail2ban.filter [846]: INFO [sshd] Found 117.221.168.100 - 2026-05-12 21:26:47
2026-05-12 21:26:48,198 fail2ban.actions [846]: NOTICE [sshd] Ban 117.221.168.100
2026-05-12 21:53:01,912 fail2ban.filter [846]: INFO [sshd] Found 36.154.15.210 - 2026-05-12 21:53:01
2026-05-12 22:20:54,104 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.238 - 2026-05-12 22:20:53
2026-05-12 22:20:56,808 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.238 - 2026-05-12 22:20:56
2026-05-12 22:25:34,812 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.238 - 2026-05-12 22:25:34
2026-05-12 22:25:35,189 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.238
2026-05-12 22:25:36,475 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.238 - 2026-05-12 22:25:36
2026-05-12 22:25:36,476 fail2ban.observer [846]: INFO [sshd] Found 2.57.122.238, bad - 2026-05-12 22:25:36, 1 # -> 2.0
2026-05-12 22:47:09,716 fail2ban.filter [846]: INFO [sshd] Found 121.227.31.82 - 2026-05-12 22:47:09
2026-05-12 22:52:16,198 fail2ban.filter [846]: INFO [sshd] Found 121.227.31.82 - 2026-05-12 22:52:16
2026-05-12 22:52:21,108 fail2ban.filter [846]: INFO [sshd] Found 121.227.31.82 - 2026-05-12 22:52:20
2026-05-12 22:52:21,620 fail2ban.actions [846]: NOTICE [sshd] Ban 121.227.31.82
2026-05-13 00:12:25,636 fail2ban.filter [846]: INFO [sshd] Found 148.113.160.5 - 2026-05-13 00:12:25
2026-05-13 00:36:25,382 fail2ban.filter [846]: INFO [sshd] Found 135.181.19.187 - 2026-05-13 00:36:25
2026-05-13 00:45:25,925 fail2ban.filter [846]: INFO [sshd] Found 185.255.100.249 - 2026-05-13 00:45:25
2026-05-13 01:01:54,998 fail2ban.filter [846]: INFO [sshd] Found 45.252.188.23 - 2026-05-13 01:01:54
2026-05-13 01:03:30,767 fail2ban.filter [846]: INFO [sshd] Found 23.94.200.194 - 2026-05-13 01:03:30
2026-05-13 01:04:01,214 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.192 - 2026-05-13 01:04:01
2026-05-13 01:04:03,917 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.192 - 2026-05-13 01:04:03
2026-05-13 01:04:06,016 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.192 - 2026-05-13 01:04:05
2026-05-13 01:04:06,016 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.192 - 2026-05-13 01:04:06
2026-05-13 01:04:06,301 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.192
2026-05-13 01:04:59,963 fail2ban.filter [846]: INFO [sshd] Found 206.212.244.18 - 2026-05-13 01:04:59
2026-05-13 01:05:15,078 fail2ban.filter [846]: INFO [sshd] Found 65.60.61.231 - 2026-05-13 01:05:15
2026-05-13 01:06:15,617 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.152 - 2026-05-13 01:06:15
2026-05-13 01:06:23,892 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.152 - 2026-05-13 01:06:23
2026-05-13 01:06:26,680 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.152 - 2026-05-13 01:06:26
2026-05-13 01:06:26,946 fail2ban.actions [846]: NOTICE [sshd] Ban 45.148.10.152
2026-05-13 01:06:30,722 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.152 - 2026-05-13 01:06:29
2026-05-13 01:06:30,723 fail2ban.filter [846]: INFO [sshd] Found 141.95.34.214 - 2026-05-13 01:06:30
2026-05-13 01:06:30,724 fail2ban.observer [846]: INFO [sshd] Found 45.148.10.152, bad - 2026-05-13 01:06:29, 1 # -> 2.0
2026-05-13 01:14:27,848 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.235 - 2026-05-13 01:14:27
2026-05-13 01:14:32,654 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.235 - 2026-05-13 01:14:32
2026-05-13 01:14:35,409 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.235 - 2026-05-13 01:14:35
2026-05-13 01:14:35,682 fail2ban.actions [846]: NOTICE [sshd] Ban 92.118.39.235
2026-05-13 01:16:30,172 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.157 - 2026-05-13 01:16:29
2026-05-13 01:16:36,077 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.157 - 2026-05-13 01:16:33
2026-05-13 01:16:36,240 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.157 - 2026-05-13 01:16:36
2026-05-13 01:16:36,262 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.157 - 2026-05-13 01:16:36
2026-05-13 01:16:36,321 fail2ban.actions [846]: NOTICE [sshd] Ban 45.148.10.157
2026-05-13 01:16:43,689 fail2ban.filter [846]: INFO [sshd] Found 107.175.141.21 - 2026-05-13 01:16:43
2026-05-13 01:18:32,436 fail2ban.filter [846]: INFO [sshd] Found 88.99.193.143 - 2026-05-13 01:18:31
2026-05-13 01:18:32,437 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.141 - 2026-05-13 01:18:31
2026-05-13 01:18:36,075 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.141 - 2026-05-13 01:18:36
2026-05-13 01:18:40,879 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.141 - 2026-05-13 01:18:38
2026-05-13 01:18:40,880 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.141 - 2026-05-13 01:18:40
2026-05-13 01:18:40,962 fail2ban.actions [846]: NOTICE [sshd] Ban 45.148.10.141
2026-05-13 01:20:50,590 fail2ban.filter [846]: INFO [sshd] Found 38.96.178.220 - 2026-05-13 01:20:50
2026-05-13 01:22:35,636 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.151 - 2026-05-13 01:22:35
2026-05-13 01:22:39,281 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.151 - 2026-05-13 01:22:39
2026-05-13 01:22:43,186 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.151 - 2026-05-13 01:22:42
2026-05-13 01:22:43,233 fail2ban.actions [846]: NOTICE [sshd] Ban 45.148.10.151
2026-05-13 01:22:43,907 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.151 - 2026-05-13 01:22:43
2026-05-13 01:22:43,908 fail2ban.observer [846]: INFO [sshd] Found 45.148.10.151, bad - 2026-05-13 01:22:43, 1 # -> 2.0
2026-05-13 01:22:52,869 fail2ban.filter [846]: INFO [sshd] Found 116.34.14.135 - 2026-05-13 01:22:52
2026-05-13 01:22:58,073 fail2ban.filter [846]: INFO [sshd] Found 116.34.14.135 - 2026-05-13 01:22:56
2026-05-13 01:22:59,160 fail2ban.filter [846]: INFO [sshd] Found 116.34.14.135 - 2026-05-13 01:22:59
2026-05-13 01:22:59,246 fail2ban.actions [846]: NOTICE [sshd] Ban 116.34.14.135
2026-05-13 01:22:59,258 fail2ban.filter [846]: INFO [sshd] Found 116.34.14.135 - 2026-05-13 01:22:59
2026-05-13 01:24:37,068 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.189 - 2026-05-13 01:24:37
2026-05-13 01:24:39,771 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.189 - 2026-05-13 01:24:39
2026-05-13 01:24:42,474 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.189 - 2026-05-13 01:24:42
2026-05-13 01:24:42,481 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.189
2026-05-13 01:24:44,077 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.189 - 2026-05-13 01:24:44
2026-05-13 01:24:44,078 fail2ban.observer [846]: INFO [sshd] Found 2.57.122.189, bad - 2026-05-13 01:24:44, 1 # -> 2.0
2026-05-13 01:26:40,321 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.191 - 2026-05-13 01:26:40
2026-05-13 01:26:43,811 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.191 - 2026-05-13 01:26:43
2026-05-13 01:26:45,796 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.191 - 2026-05-13 01:26:45
2026-05-13 01:26:46,498 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.191 - 2026-05-13 01:26:46
2026-05-13 01:26:46,521 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.191
2026-05-13 01:26:47,129 fail2ban.actions [846]: NOTICE [sshd] Unban 117.221.168.100
2026-05-13 01:27:29,744 fail2ban.filter [846]: INFO [sshd] Found 68.235.52.3 - 2026-05-13 01:27:29
2026-05-13 01:28:40,594 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.195 - 2026-05-13 01:28:40
2026-05-13 01:28:45,399 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.195 - 2026-05-13 01:28:45
2026-05-13 01:30:22,194 fail2ban.filter [846]: INFO [sshd] Found 108.181.22.199 - 2026-05-13 01:30:22
2026-05-13 01:30:31,553 fail2ban.filter [846]: INFO [sshd] Found 208.67.251.50 - 2026-05-13 01:30:31
2026-05-13 01:30:43,365 fail2ban.filter [846]: INFO [sshd] Found 45.227.254.170 - 2026-05-13 01:30:42
2026-05-13 01:30:51,391 fail2ban.filter [846]: INFO [sshd] Found 45.227.254.170 - 2026-05-13 01:30:51
2026-05-13 01:30:54,969 fail2ban.filter [846]: INFO [sshd] Found 45.227.254.170 - 2026-05-13 01:30:54
2026-05-13 01:30:55,221 fail2ban.actions [846]: NOTICE [sshd] Ban 45.227.254.170
2026-05-13 01:31:58,521 fail2ban.filter [846]: INFO [sshd] Found 45.8.224.214 - 2026-05-13 01:31:58
2026-05-13 01:32:03,705 fail2ban.filter [846]: INFO [sshd] Found 118.196.117.234 - 2026-05-13 01:32:03
2026-05-13 01:32:11,248 fail2ban.filter [846]: INFO [sshd] Found 118.196.117.234 - 2026-05-13 01:32:10
2026-05-13 01:32:19,668 fail2ban.filter [846]: INFO [sshd] Found 118.196.117.234 - 2026-05-13 01:32:19
2026-05-13 01:32:19,851 fail2ban.actions [846]: NOTICE [sshd] Ban 118.196.117.234
2026-05-13 01:32:45,491 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.197 - 2026-05-13 01:32:44
2026-05-13 01:32:55,801 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.197 - 2026-05-13 01:32:55
2026-05-13 01:32:58,105 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.197 - 2026-05-13 01:32:57
2026-05-13 01:32:58,470 fail2ban.actions [846]: NOTICE [sshd] Ban 92.118.39.197
2026-05-13 01:34:59,793 fail2ban.filter [846]: INFO [sshd] Found 186.233.184.67 - 2026-05-13 01:34:59
2026-05-13 01:35:20,112 fail2ban.filter [846]: INFO [sshd] Found 121.78.125.123 - 2026-05-13 01:35:19
2026-05-13 01:37:08,501 fail2ban.filter [846]: INFO [sshd] Found 140.99.130.224 - 2026-05-13 01:37:08
2026-05-13 01:38:49,358 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.195 - 2026-05-13 01:38:49
2026-05-13 01:38:49,769 fail2ban.actions [846]: NOTICE [sshd] Ban 92.118.39.195
2026-05-13 01:39:01,669 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.195 - 2026-05-13 01:38:51
2026-05-13 01:39:01,670 fail2ban.observer [846]: INFO [sshd] Found 92.118.39.195, bad - 2026-05-13 01:38:51, 1 # -> 2.0
2026-05-13 01:40:46,856 fail2ban.filter [846]: INFO [sshd] Found 74.208.91.1 - 2026-05-13 01:40:46
2026-05-13 01:40:50,480 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.195 - 2026-05-13 01:40:50
2026-05-13 01:40:55,368 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.195 - 2026-05-13 01:40:55
2026-05-13 01:42:07,752 fail2ban.filter [846]: INFO [sshd] Found 173.254.207.146 - 2026-05-13 01:42:07
2026-05-13 01:44:17,728 fail2ban.filter [846]: INFO [sshd] Found 192.95.10.204 - 2026-05-13 01:44:17
2026-05-13 01:44:54,336 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.194 - 2026-05-13 01:44:53
2026-05-13 01:45:01,514 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.194 - 2026-05-13 01:45:01
2026-05-13 01:45:04,091 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.194 - 2026-05-13 01:45:04
2026-05-13 01:45:04,474 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.194
2026-05-13 01:46:17,253 fail2ban.filter [846]: WARNING [sshd] Detected a log entry 1m 11s before the current time in operation mode. This looks like a latency problem. Treating such entries as if they just happened.
2026-05-13 01:46:17,253 fail2ban.filter [846]: WARNING [sshd] Please check a jail for a timing issue. Line with odd timestamp: 2026-05-13T01:45:06.267581+00:00 felexdev sshd[19538]: Failed password for root from 2.57.122.194 port 8454 ssh2
2026-05-13 01:46:17,253 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.194 - 2026-05-13 01:46:17
2026-05-13 01:46:17,254 fail2ban.observer [846]: INFO [sshd] Found 2.57.122.194, bad - 2026-05-13 01:46:17, 1 # -> 2.0
2026-05-13 01:48:57,060 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.190 - 2026-05-13 01:48:56
2026-05-13 01:49:03,134 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.190 - 2026-05-13 01:49:03
2026-05-13 01:49:06,539 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.190 - 2026-05-13 01:49:06
2026-05-13 01:49:06,546 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.190
2026-05-13 01:49:20,167 fail2ban.filter [846]: INFO [sshd] Found 45.12.132.198 - 2026-05-13 01:49:20
2026-05-13 01:53:00,005 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.147 - 2026-05-13 01:52:59
2026-05-13 01:53:06,868 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.147 - 2026-05-13 01:53:06
2026-05-13 01:53:10,286 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.147 - 2026-05-13 01:53:09
2026-05-13 01:53:10,618 fail2ban.actions [846]: NOTICE [sshd] Ban 45.148.10.147
2026-05-13 01:58:15,005 fail2ban.filter [846]: INFO [sshd] Found 148.113.160.5 - 2026-05-13 01:58:14
2026-05-13 02:12:51,351 fail2ban.filter [846]: INFO [sshd] Found 51.210.15.158 - 2026-05-13 02:12:50
2026-05-13 02:14:08,580 fail2ban.filter [846]: INFO [sshd] Found 45.148.147.191 - 2026-05-13 02:14:08
2026-05-13 02:14:10,185 fail2ban.filter [846]: INFO [sshd] Found 64.227.59.76 - 2026-05-13 02:14:10
2026-05-13 02:16:00,969 fail2ban.filter [846]: INFO [sshd] Found 185.219.133.156 - 2026-05-13 02:16:00
2026-05-13 02:20:31,300 fail2ban.filter [846]: INFO [sshd] Found 185.255.100.251 - 2026-05-13 02:20:31
2026-05-13 02:21:15,883 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.197 - 2026-05-13 02:21:15
2026-05-13 02:21:24,149 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.197 - 2026-05-13 02:21:24
2026-05-13 02:21:26,950 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.197 - 2026-05-13 02:21:26
2026-05-13 02:21:27,071 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.197
2026-05-13 02:21:34,959 fail2ban.filter [846]: INFO [sshd] Found 172.93.103.2 - 2026-05-13 02:21:34
2026-05-13 02:21:39,273 fail2ban.filter [846]: INFO [sshd] Found 62.72.46.110 - 2026-05-13 02:21:39
2026-05-13 02:22:45,049 fail2ban.filter [846]: INFO [sshd] Found 46.55.211.4 - 2026-05-13 02:22:45
2026-05-13 02:25:34,344 fail2ban.actions [846]: NOTICE [sshd] Unban 2.57.122.238
2026-05-13 02:27:17,259 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.23 - 2026-05-13 02:27:17
2026-05-13 02:27:25,703 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.23 - 2026-05-13 02:27:25
2026-05-13 02:29:14,923 fail2ban.filter [846]: INFO [sshd] Found 107.173.122.15 - 2026-05-13 02:29:14
2026-05-13 02:33:11,416 fail2ban.filter [846]: INFO [sshd] Found 51.77.222.246 - 2026-05-13 02:33:11
2026-05-13 02:35:23,371 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.193 - 2026-05-13 02:35:22
2026-05-13 02:35:31,628 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.193 - 2026-05-13 02:35:31
2026-05-13 02:35:35,033 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.193 - 2026-05-13 02:35:34
2026-05-13 02:35:35,120 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.193
2026-05-13 02:37:04,242 fail2ban.filter [846]: INFO [sshd] Found 172.93.102.236 - 2026-05-13 02:37:03
2026-05-13 02:37:30,934 fail2ban.filter [846]: INFO [sshd] Found 185.113.141.117 - 2026-05-13 02:37:30
2026-05-13 02:41:25,673 fail2ban.filter [846]: INFO [sshd] Found 195.62.32.180 - 2026-05-13 02:41:25
2026-05-13 02:42:46,842 fail2ban.filter [846]: INFO [sshd] Found 115.190.162.240 - 2026-05-13 02:42:46
2026-05-13 02:43:58,560 fail2ban.filter [846]: INFO [sshd] Found 181.115.208.53 - 2026-05-13 02:43:58
2026-05-13 02:44:47,205 fail2ban.filter [846]: INFO [sshd] Found 195.26.87.217 - 2026-05-13 02:44:47
2026-05-13 02:45:25,138 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.196 - 2026-05-13 02:45:24
2026-05-13 02:45:28,241 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.196 - 2026-05-13 02:45:27
2026-05-13 02:45:29,844 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.196 - 2026-05-13 02:45:29
2026-05-13 02:45:29,860 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.196 - 2026-05-13 02:45:29
2026-05-13 02:45:29,883 fail2ban.actions [846]: NOTICE [sshd] Ban 92.118.39.196
2026-05-13 02:50:07,986 fail2ban.filter [846]: INFO [sshd] Found 57.131.46.57 - 2026-05-13 02:50:07
2026-05-13 02:52:09,689 fail2ban.filter [846]: INFO [sshd] Found 115.190.162.240 - 2026-05-13 02:52:09
2026-05-13 02:52:20,200 fail2ban.actions [846]: NOTICE [sshd] Unban 121.227.31.82
2026-05-13 02:53:07,542 fail2ban.filter [846]: INFO [sshd] Found 115.190.162.240 - 2026-05-13 02:53:07
2026-05-13 02:53:08,227 fail2ban.actions [846]: NOTICE [sshd] Ban 115.190.162.240
2026-05-13 02:55:01,671 fail2ban.filter [846]: INFO [sshd] Found 106.75.230.113 - 2026-05-13 02:55:01
2026-05-13 02:55:04,377 fail2ban.filter [846]: INFO [sshd] Found 106.75.230.113 - 2026-05-13 02:55:04
2026-05-13 02:56:03,126 fail2ban.filter [846]: INFO [sshd] Found 185.106.103.134 - 2026-05-13 02:56:02
2026-05-13 02:59:48,421 fail2ban.filter [846]: INFO [sshd] Found 106.75.230.113 - 2026-05-13 02:59:47
2026-05-13 02:59:48,541 fail2ban.actions [846]: NOTICE [sshd] Ban 106.75.230.113
2026-05-13 02:59:50,129 fail2ban.filter [846]: INFO [sshd] Found 106.75.230.113 - 2026-05-13 02:59:50
2026-05-13 02:59:50,129 fail2ban.observer [846]: INFO [sshd] Found 106.75.230.113, bad - 2026-05-13 02:59:50, 1 # -> 2.0
2026-05-13 03:11:42,683 fail2ban.filter [846]: INFO [sshd] Found 51.254.17.136 - 2026-05-13 03:11:42
2026-05-13 03:12:43,034 fail2ban.filter [846]: INFO [sshd] Found 23.237.108.178 - 2026-05-13 03:12:42
2026-05-13 03:17:38,104 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.195 - 2026-05-13 03:17:38
2026-05-13 03:17:38,250 fail2ban.filter [846]: INFO [sshd] Found 185.222.138.254 - 2026-05-13 03:17:38
2026-05-13 03:17:40,281 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.195 - 2026-05-13 03:17:40
2026-05-13 03:17:42,984 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.195 - 2026-05-13 03:17:42
2026-05-13 03:17:42,984 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.195 - 2026-05-13 03:17:42
2026-05-13 03:17:43,032 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.195
2026-05-13 03:19:39,684 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.196 - 2026-05-13 03:19:39
2026-05-13 03:19:48,792 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.196 - 2026-05-13 03:19:48
2026-05-13 03:22:45,299 fail2ban.filter [846]: INFO [sshd] Found 31.42.184.158 - 2026-05-13 03:22:45
2026-05-13 03:23:15,726 fail2ban.filter [846]: INFO [sshd] Found 172.245.89.104 - 2026-05-13 03:23:15
2026-05-13 03:25:43,451 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.196 - 2026-05-13 03:25:43
2026-05-13 03:25:43,766 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.196
2026-05-13 03:32:25,480 fail2ban.filter [846]: INFO [sshd] Found 104.194.10.248 - 2026-05-13 03:32:25
2026-05-13 03:35:41,045 fail2ban.filter [846]: INFO [sshd] Found 45.90.105.6 - 2026-05-13 03:35:40
2026-05-13 03:37:13,421 fail2ban.filter [846]: INFO [sshd] Found 184.154.153.131 - 2026-05-13 03:37:12
2026-05-13 03:40:53,402 fail2ban.filter [846]: INFO [sshd] Found 74.48.65.85 - 2026-05-13 03:40:53
2026-05-13 03:48:34,861 fail2ban.filter [846]: INFO [sshd] Found 154.16.115.17 - 2026-05-13 03:48:34
2026-05-13 03:48:51,315 fail2ban.filter [846]: INFO [sshd] Found 195.88.211.210 - 2026-05-13 03:48:51
2026-05-13 03:50:26,012 fail2ban.filter [846]: INFO [sshd] Found 128.0.104.44 - 2026-05-13 03:50:26
2026-05-13 03:52:05,787 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.23 - 2026-05-13 03:52:05
2026-05-13 03:52:14,895 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.23 - 2026-05-13 03:52:14
2026-05-13 03:52:17,952 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.23 - 2026-05-13 03:52:17
2026-05-13 03:52:18,192 fail2ban.actions [846]: NOTICE [sshd] Ban 92.118.39.23
2026-05-13 03:56:58,317 fail2ban.filter [846]: INFO [sshd] Found 89.45.12.136 - 2026-05-13 03:56:58
2026-05-13 03:57:05,425 fail2ban.filter [846]: INFO [sshd] Found 62.210.207.172 - 2026-05-13 03:57:05
2026-05-13 03:57:25,342 fail2ban.filter [846]: INFO [sshd] Found 38.96.178.220 - 2026-05-13 03:57:25
2026-05-13 03:57:37,654 fail2ban.filter [846]: INFO [sshd] Found 51.77.222.246 - 2026-05-13 03:57:37
2026-05-13 04:02:13,106 fail2ban.filter [846]: INFO [sshd] Found 74.48.65.85 - 2026-05-13 04:02:13
2026-05-13 04:05:46,016 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.236 - 2026-05-13 04:05:45
2026-05-13 04:05:52,092 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.236 - 2026-05-13 04:05:52
2026-05-13 04:08:45,300 fail2ban.filter [846]: INFO [sshd] Found 108.181.22.199 - 2026-05-13 04:08:45
2026-05-13 04:17:46,167 fail2ban.filter [846]: INFO [sshd] Found 185.255.100.251 - 2026-05-13 04:17:46
2026-05-13 04:20:49,183 fail2ban.filter [846]: INFO [sshd] Found 86.111.187.169 - 2026-05-13 04:20:49
2026-05-13 04:23:25,610 fail2ban.filter [846]: INFO [sshd] Found 102.223.47.171 - 2026-05-13 04:23:25
2026-05-13 04:25:44,088 fail2ban.filter [846]: INFO [sshd] Found 212.192.216.2 - 2026-05-13 04:25:44
2026-05-13 04:29:30,972 fail2ban.filter [846]: INFO [sshd] Found 191.241.76.128 - 2026-05-13 04:29:30
2026-05-13 04:32:28,949 fail2ban.filter [846]: INFO [sshd] Found 62.210.246.122 - 2026-05-13 04:32:28
2026-05-13 04:35:36,272 fail2ban.filter [846]: INFO [sshd] Found 173.254.207.146 - 2026-05-13 04:35:36
2026-05-13 04:36:21,185 fail2ban.filter [846]: INFO [sshd] Found 173.236.16.74 - 2026-05-13 04:36:21
2026-05-13 04:40:22,258 fail2ban.filter [846]: INFO [sshd] Found 148.153.121.224 - 2026-05-13 04:40:22
2026-05-13 04:40:53,787 fail2ban.filter [846]: INFO [sshd] Found 14.161.29.98 - 2026-05-13 04:40:53
2026-05-13 04:42:13,351 fail2ban.filter [846]: INFO [sshd] Found 74.48.100.96 - 2026-05-13 04:42:12
2026-05-13 04:47:12,614 fail2ban.filter [846]: INFO [sshd] Found 135.181.160.223 - 2026-05-13 04:47:12
2026-05-13 04:53:11,827 fail2ban.filter [846]: INFO [sshd] Found 102.129.186.123 - 2026-05-13 04:53:11
2026-05-13 04:53:44,556 fail2ban.filter [846]: INFO [sshd] Found 185.134.49.116 - 2026-05-13 04:53:44
2026-05-13 04:55:28,861 fail2ban.filter [846]: INFO [sshd] Found 128.0.104.44 - 2026-05-13 04:55:28
2026-05-13 04:59:28,059 fail2ban.filter [846]: INFO [sshd] Found 102.129.186.123 - 2026-05-13 04:59:27
2026-05-13 05:04:05,331 fail2ban.actions [846]: NOTICE [sshd] Unban 2.57.122.192
2026-05-13 05:06:26,588 fail2ban.actions [846]: NOTICE [sshd] Unban 45.148.10.152
2026-05-13 05:10:11,843 fail2ban.filter [846]: INFO [sshd] Found 148.153.121.223 - 2026-05-13 05:10:11
2026-05-13 05:10:17,751 fail2ban.filter [846]: INFO [sshd] Found 102.129.186.87 - 2026-05-13 05:10:17
2026-05-13 05:14:20,649 fail2ban.filter [846]: INFO [sshd] Found 186.233.184.67 - 2026-05-13 05:14:20
2026-05-13 05:14:35,332 fail2ban.actions [846]: NOTICE [sshd] Unban 92.118.39.235
2026-05-13 05:16:36,580 fail2ban.actions [846]: NOTICE [sshd] Unban 45.148.10.157
2026-05-13 05:18:38,633 fail2ban.actions [846]: NOTICE [sshd] Unban 45.148.10.141
2026-05-13 05:21:35,308 fail2ban.filter [846]: INFO [sshd] Found 103.75.71.17 - 2026-05-13 05:21:35
2026-05-13 05:22:42,713 fail2ban.actions [846]: NOTICE [sshd] Unban 45.148.10.151
2026-05-13 05:22:50,072 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.151 - 2026-05-13 05:22:49
2026-05-13 05:22:50,073 fail2ban.observer [846]: INFO [sshd] Found 45.148.10.151, bad - 2026-05-13 05:22:49, 1 # -> 2.0
2026-05-13 05:22:54,878 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.151 - 2026-05-13 05:22:54
2026-05-13 05:22:54,878 fail2ban.observer [846]: INFO [sshd] Found 45.148.10.151, bad - 2026-05-13 05:22:54, 1 # -> 2.0
2026-05-13 05:22:54,932 fail2ban.actions [846]: NOTICE [sshd] Ban 45.148.10.151
2026-05-13 05:22:54,935 fail2ban.observer [846]: INFO [sshd] IP 45.148.10.151 is bad: 1 # last 2026-05-13 01:22:42 - incr 4h to 8h
2026-05-13 05:22:54,935 fail2ban.observer [846]: NOTICE [sshd] Increase Ban 45.148.10.151 (2 # 8h -> 2026-05-13 13:22:54)
2026-05-13 05:22:59,141 fail2ban.actions [846]: NOTICE [sshd] Unban 116.34.14.135
2026-05-13 05:24:42,387 fail2ban.actions [846]: NOTICE [sshd] Unban 2.57.122.189
2026-05-13 05:26:19,114 fail2ban.filter [846]: INFO [sshd] Found 23.239.96.154 - 2026-05-13 05:26:19
2026-05-13 05:26:45,041 fail2ban.actions [846]: NOTICE [sshd] Unban 2.57.122.191
2026-05-13 05:26:50,642 fail2ban.filter [846]: INFO [sshd] Found 199.127.60.187 - 2026-05-13 05:26:50
2026-05-13 05:30:54,326 fail2ban.actions [846]: NOTICE [sshd] Unban 45.227.254.170
2026-05-13 05:31:07,554 fail2ban.filter [846]: INFO [sshd] Found 172.93.103.2 - 2026-05-13 05:31:07
2026-05-13 05:32:19,564 fail2ban.actions [846]: NOTICE [sshd] Unban 118.196.117.234
2026-05-13 05:32:56,298 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.157 - 2026-05-13 05:32:55
2026-05-13 05:32:56,299 fail2ban.observer [846]: INFO [sshd] Found 45.148.10.157, bad - 2026-05-13 05:32:55, 1 # -> 2.0
2026-05-13 05:32:57,590 fail2ban.actions [846]: NOTICE [sshd] Unban 92.118.39.197
2026-05-13 05:33:06,753 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.157 - 2026-05-13 05:33:06
2026-05-13 05:33:06,754 fail2ban.observer [846]: INFO [sshd] Found 45.148.10.157, bad - 2026-05-13 05:33:06, 1 # -> 2.0
2026-05-13 05:33:06,811 fail2ban.actions [846]: NOTICE [sshd] Ban 45.148.10.157
2026-05-13 05:33:06,814 fail2ban.observer [846]: INFO [sshd] IP 45.148.10.157 is bad: 1 # last 2026-05-13 01:16:36 - incr 4h to 8h
2026-05-13 05:33:06,815 fail2ban.observer [846]: NOTICE [sshd] Increase Ban 45.148.10.157 (2 # 8h -> 2026-05-13 13:33:06)
2026-05-13 05:33:10,659 fail2ban.filter [846]: INFO [sshd] Found 216.252.238.153 - 2026-05-13 05:33:10
2026-05-13 05:38:48,445 fail2ban.filter [846]: INFO [sshd] Found 172.93.121.126 - 2026-05-13 05:38:48
2026-05-13 05:38:49,109 fail2ban.actions [846]: NOTICE [sshd] Unban 92.118.39.195
2026-05-13 05:39:28,235 fail2ban.filter [846]: INFO [sshd] Found 198.20.127.155 - 2026-05-13 05:39:28
2026-05-13 05:42:09,338 fail2ban.filter [846]: INFO [sshd] Found 128.0.104.44 - 2026-05-13 05:42:09
2026-05-13 05:45:04,421 fail2ban.actions [846]: NOTICE [sshd] Unban 2.57.122.194
2026-05-13 05:47:02,889 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.235 - 2026-05-13 05:47:02
2026-05-13 05:47:02,890 fail2ban.observer [846]: INFO [sshd] Found 92.118.39.235, bad - 2026-05-13 05:47:02, 1 # -> 2.0
2026-05-13 05:47:08,966 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.235 - 2026-05-13 05:47:08
2026-05-13 05:47:08,967 fail2ban.observer [846]: INFO [sshd] Found 92.118.39.235, bad - 2026-05-13 05:47:08, 1 # -> 2.0
2026-05-13 05:47:09,073 fail2ban.actions [846]: NOTICE [sshd] Ban 92.118.39.235
2026-05-13 05:47:09,075 fail2ban.observer [846]: INFO [sshd] IP 92.118.39.235 is bad: 1 # last 2026-05-13 01:14:35 - incr 4h to 8h
2026-05-13 05:47:09,076 fail2ban.observer [846]: NOTICE [sshd] Increase Ban 92.118.39.235 (2 # 8h -> 2026-05-13 13:47:08)
2026-05-13 05:47:18,361 fail2ban.filter [846]: INFO [sshd] Found 34.78.75.90 - 2026-05-13 05:47:18
2026-05-13 05:47:21,128 fail2ban.filter [846]: INFO [sshd] Found 34.78.75.90 - 2026-05-13 05:47:20
2026-05-13 05:47:43,573 fail2ban.filter [846]: INFO [sshd] Found 34.14.29.189 - 2026-05-13 05:47:43
2026-05-13 05:48:38,523 fail2ban.filter [846]: INFO [sshd] Found 51.79.67.63 - 2026-05-13 05:48:38
2026-05-13 05:49:06,311 fail2ban.actions [846]: NOTICE [sshd] Unban 2.57.122.190
2026-05-13 05:51:02,712 fail2ban.filter [846]: INFO [sshd] Found 45.227.254.170 - 2026-05-13 05:51:02
2026-05-13 05:51:02,713 fail2ban.observer [846]: INFO [sshd] Found 45.227.254.170, bad - 2026-05-13 05:51:02, 1 # -> 2.0
2026-05-13 05:51:09,896 fail2ban.filter [846]: INFO [sshd] Found 45.227.254.170 - 2026-05-13 05:51:09
2026-05-13 05:51:09,897 fail2ban.observer [846]: INFO [sshd] Found 45.227.254.170, bad - 2026-05-13 05:51:09, 1 # -> 2.0
2026-05-13 05:51:10,360 fail2ban.actions [846]: NOTICE [sshd] Ban 45.227.254.170
2026-05-13 05:51:10,363 fail2ban.observer [846]: INFO [sshd] IP 45.227.254.170 is bad: 1 # last 2026-05-13 01:30:54 - incr 4h to 8h
2026-05-13 05:51:10,363 fail2ban.observer [846]: NOTICE [sshd] Increase Ban 45.227.254.170 (2 # 8h -> 2026-05-13 13:51:09)
2026-05-13 05:53:06,474 fail2ban.filter [846]: INFO [sshd] Found 101.96.202.144 - 2026-05-13 05:53:06
2026-05-13 05:53:09,599 fail2ban.actions [846]: NOTICE [sshd] Unban 45.148.10.147
2026-05-13 05:53:10,804 fail2ban.filter [846]: INFO [sshd] Found 101.96.202.144 - 2026-05-13 05:53:10
2026-05-13 05:53:16,598 fail2ban.filter [846]: INFO [sshd] Found 101.96.202.144 - 2026-05-13 05:53:16
2026-05-13 05:53:16,817 fail2ban.actions [846]: NOTICE [sshd] Ban 101.96.202.144
2026-05-13 05:54:52,753 fail2ban.filter [846]: INFO [sshd] Found 45.88.0.252 - 2026-05-13 05:54:52
2026-05-13 05:55:04,313 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.147 - 2026-05-13 05:55:04
2026-05-13 05:55:04,314 fail2ban.observer [846]: INFO [sshd] Found 45.148.10.147, bad - 2026-05-13 05:55:04, 1 # -> 2.0
2026-05-13 05:55:09,119 fail2ban.filter [846]: INFO [sshd] Found 45.148.10.147 - 2026-05-13 05:55:09
2026-05-13 05:55:09,120 fail2ban.observer [846]: INFO [sshd] Found 45.148.10.147, bad - 2026-05-13 05:55:09, 1 # -> 2.0
2026-05-13 05:55:09,455 fail2ban.actions [846]: NOTICE [sshd] Ban 45.148.10.147
2026-05-13 05:55:09,458 fail2ban.observer [846]: INFO [sshd] IP 45.148.10.147 is bad: 1 # last 2026-05-13 01:53:09 - incr 4h to 8h
2026-05-13 05:55:09,458 fail2ban.observer [846]: NOTICE [sshd] Increase Ban 45.148.10.147 (2 # 8h -> 2026-05-13 13:55:09)
2026-05-13 05:55:58,308 fail2ban.filter [846]: INFO [sshd] Found 85.214.54.31 - 2026-05-13 05:55:58
2026-05-13 05:56:01,015 fail2ban.filter [846]: INFO [sshd] Found 85.214.54.31 - 2026-05-13 05:56:00
2026-05-13 05:56:25,128 fail2ban.filter [846]: INFO [sshd] Found 148.135.49.242 - 2026-05-13 05:56:25
2026-05-13 05:57:04,663 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.192 - 2026-05-13 05:57:04
2026-05-13 05:57:04,664 fail2ban.observer [846]: INFO [sshd] Found 2.57.122.192, bad - 2026-05-13 05:57:04, 1 # -> 2.0
2026-05-13 05:57:13,772 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.192 - 2026-05-13 05:57:13
2026-05-13 05:57:13,773 fail2ban.observer [846]: INFO [sshd] Found 2.57.122.192, bad - 2026-05-13 05:57:13, 1 # -> 2.0
2026-05-13 05:57:14,094 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.192
2026-05-13 05:57:14,097 fail2ban.observer [846]: INFO [sshd] IP 2.57.122.192 is bad: 1 # last 2026-05-13 01:04:05 - incr 4h to 8h
2026-05-13 05:57:14,098 fail2ban.observer [846]: NOTICE [sshd] Increase Ban 2.57.122.192 (2 # 8h -> 2026-05-13 13:57:13)
2026-05-13 05:58:29,033 fail2ban.filter [846]: INFO [sshd] Found 148.153.121.146 - 2026-05-13 05:58:28
2026-05-13 05:59:53,440 fail2ban.filter [846]: INFO [sshd] Found 69.175.33.170 - 2026-05-13 05:59:53
2026-05-13 06:01:07,103 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.191 - 2026-05-13 06:01:06
2026-05-13 06:01:07,104 fail2ban.observer [846]: INFO [sshd] Found 2.57.122.191, bad - 2026-05-13 06:01:06, 1 # -> 2.0
2026-05-13 06:01:11,908 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.191 - 2026-05-13 06:01:11
2026-05-13 06:01:11,909 fail2ban.observer [846]: INFO [sshd] Found 2.57.122.191, bad - 2026-05-13 06:01:11, 1 # -> 2.0
2026-05-13 06:01:12,164 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.191
2026-05-13 06:01:12,167 fail2ban.observer [846]: INFO [sshd] IP 2.57.122.191 is bad: 1 # last 2026-05-13 01:26:45 - incr 4h to 8h
2026-05-13 06:01:12,168 fail2ban.observer [846]: NOTICE [sshd] Increase Ban 2.57.122.191 (2 # 8h -> 2026-05-13 14:01:11)
2026-05-13 06:02:35,084 fail2ban.filter [846]: INFO [sshd] Found 130.185.239.222 - 2026-05-13 06:02:35
2026-05-13 06:07:09,162 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.236 - 2026-05-13 06:07:09
2026-05-13 06:07:14,071 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.236 - 2026-05-13 06:07:14
2026-05-13 06:07:16,707 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.236 - 2026-05-13 06:07:16
2026-05-13 06:07:16,868 fail2ban.actions [846]: NOTICE [sshd] Ban 92.118.39.236
2026-05-13 06:08:13,172 fail2ban.filter [846]: INFO [sshd] Found 148.135.33.66 - 2026-05-13 06:08:13
2026-05-13 06:09:09,116 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.190 - 2026-05-13 06:09:09
2026-05-13 06:09:09,117 fail2ban.observer [846]: INFO [sshd] Found 2.57.122.190, bad - 2026-05-13 06:09:09, 1 # -> 2.0
2026-05-13 06:09:16,223 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.190 - 2026-05-13 06:09:16
2026-05-13 06:09:16,224 fail2ban.observer [846]: INFO [sshd] Found 2.57.122.190, bad - 2026-05-13 06:09:16, 1 # -> 2.0
2026-05-13 06:09:16,908 fail2ban.actions [846]: NOTICE [sshd] Ban 2.57.122.190
2026-05-13 06:09:16,911 fail2ban.observer [846]: INFO [sshd] IP 2.57.122.190 is bad: 1 # last 2026-05-13 01:49:06 - incr 4h to 8h
2026-05-13 06:09:16,911 fail2ban.observer [846]: NOTICE [sshd] Increase Ban 2.57.122.190 (2 # 8h -> 2026-05-13 14:09:16)
2026-05-13 06:09:18,794 fail2ban.filter [846]: INFO [sshd] Found 2.57.122.190 - 2026-05-13 06:09:18
2026-05-13 06:09:18,795 fail2ban.observer [846]: INFO [sshd] Found 2.57.122.190, bad - 2026-05-13 06:09:18, 2 # -> 3.0, Ban
2026-05-13 06:11:11,988 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.195 - 2026-05-13 06:11:11
2026-05-13 06:11:11,988 fail2ban.observer [846]: INFO [sshd] Found 92.118.39.195, bad - 2026-05-13 06:11:11, 1 # -> 2.0
2026-05-13 06:11:15,892 fail2ban.filter [846]: INFO [sshd] Found 92.118.39.195 - 2026-05-13 06:11:15
2026-05-13 06:11:15,893 fail2ban.observer [846]: INFO [sshd] Found 92.118.39.195, bad - 2026-05-13 06:11:15, 1 # -> 2.0
2026-05-13 06:11:16,147 fail2ban.actions [846]: NOTICE [sshd] Ban 92.118.39.195
2026-05-13 06:11:16,148 fail2ban.observer [846]: INFO [sshd] IP 92.118.39.195 is bad: 1 # last 2026-05-13 01:38:49 - incr 4h to 8h
2026-05-13 06:11:16,150 fail2ban.observer [846]: NOTICE [sshd] Increase Ban 92.118.39.195 (2 # 8h -> 2026-05-13 14:11:15)
2026-05-13 06:12:23,068 fail2ban.filter [846]: INFO [sshd] Found 130.185.222.46 - 2026-05-13 06:12:23
2026-05-13 06:15:46,885 fail2ban.filter [846]: INFO [sshd] Found 194.68.225.189 - 2026-05-13 06:15:46
+229 -82
View File
@@ -1,41 +1,51 @@
#pragma once
/**
* @file fxalloc/includes/FXAlloc.h
* @author felex67 (admin@felexdev.ru)
* @version 1.0.0 dev-in-progress
* \mainpage
* \file fxalloc/includes/FXAlloc.h
* \author felex67 (admin@felexdev.ru)
* \version 1.0.0 dev-in-progress
*
* @brief Публичный интерфейс модуля аллокатора-профилировщика для серверных очередей/пакетов
* \brief Публичный интерфейс модуля аллокатора-профилировщика для серверных очередей/пакетов
*
* @details Language: C11 (ISO/IEC 9899:2011).
* \details Language: C11 (ISO/IEC 9899:2011).
*
* SRP + KISS + YAGNI + HLP(High Level Performance)
*
* @note Поддерживаемые компиляторы:
* Лицензия: Apache 2.0
*
* \note Поддерживаемые компиляторы:
* - MSVC: Версия >= 1930(VisualStudio 22+)
* - GCC: Версия >= 5.0
* - CLang: Любая
* - CLang: Любая поддерживающая C-11
*
* @warning Изменять указатели `(*fxalloc)()/(*fxfree)()` строго запрещено!!!
* @note Для увеличения производительности необходимо заключение контракта: определение
* \warning Изменять указатели `(*fxalloc)()/(*fxfree)()` строго запрещено!!!
*
* \note Для увеличения производительности необходимо заключение контракта: определение
* макроса `_I_UNDERSTAND_THAT_I_SHOULD_NEVER_CHANGE_THESE_POINTERS_`. Без определения
* этого макроса модуль вынужден работать через прокси-функции что влечёт за собой
* снижение производительности(увеличение ~25 тактов на вызов `fxalloc/fxfree`).
*
* @note Режим `__FXALLOC_TURBO` работает только при неконстантных `fxalloc/fxfree`.
* \note Режим `__FXALLOC_TURBO` работает только при неконстантных `fxalloc/fxfree`.
* В этом режиме недоступен глубокий анализ использования памяти. Особенности:
* - Метаданные для каждого блока уменьшаются до 16-ти байт.
* - Все блоки выравниваются по адресам кратным 16.
* - Все LIFO Грейдов выравниваются по L1(кэш процессора первого уровня). Настроить можно
* изменив `FXALLOC_LIFO_HEAD_ALIGN` на соответствующее Вашей архитектуре значение
*
* @note Первый вызов `fxalloc()`(без предварительного вызова `fxalloc_init()`) в
* \note Первый вызов `fxalloc()`(без предварительного вызова `fxalloc_init()`) в
* потоке/процессе крайне медленный так как происходит инициализация пула,
* для потока/процесса, последующие вызовы будут работать с инициализированным пулом памяти.
* Для преднастройки пула потока используйте функцию `fxalloc_init()`.
*
* @note Теоретический максимальный размер блока `(1U << 32) - 25` → 4'294'967'271 байт.
* \note Теоретический максимальный размер блока `(1U << 32) - 25` → 4'294'967'271 байт.
* Рекомендуемый размер блока не более 64 КиБ.
*
* \note Профилированием и очисткой памяти потока занимается поток-наблюдатель, запускается
* при первом обращении к аллокатору и завершается только после очистки последнего пула, для обеспечения
* безаварийного завершения перед выходом из процесса используете fxalloc_finalize().
* Пул потока освобождается только когда все блоки возвращены потоку-владельцу или при вызове fxalloc_finalize().
*
* \p
* Алгоритмы использования:
* 1. `void* ptr = fxalloc(N) → работаем с ptr → fxfree(ptr) → fxalloc_cleanup()`
* - `fxalloc` → При первом вызове инициализирует пул в глобальной области с настройками
@@ -51,9 +61,28 @@
* Такое поведение помогает собрать статистику для профилирования. Данные об использовании
* памяти могут быть получены переводом аллокатора в режим анализа(выполняется потоком-наблюдателем).
*
* \p
* Рекомендации по использованию:
* Аллокатор в первую очередь рассчитан на рпофилирование с постепенным переходом в рабочий режим.
* Режимы профилирования можно переключать во время работы приложения как для конкретного потока(fxalloc_profile_thread),
* так и для всего приложения в целом(fxalloc_profile). Концепция использования:
* 1. Проверка на критические ошибки в вызывающем коде без определения мкросов:
* На этом этапе отлавливаются все попытки изменить указатели `fxalloc` и `fxfree`, попытки повторного
* высвобождения, а также передача "не родных" указателей(приложение моментально падает с SegmentationFault, создаётся
* файл `fxalloc.log` с текстовым описанием ошибки).
* 2. Определение макроса `_I_UNDERSTAND_THAT_I_SHOULD_NEVER_CHANGE_THESE_POINTERS_`:
* исключает работу аллокатора через прокси-функции первичные проверки первого этапа, подразумевается что этап 1 пройден. Требуется перекомпияция проекта
* после первого этапа. Вэтом режиме как и в предыдущем доступен режим глубокого профилирования.
* 3. После первичных рабочих нагрузок и стабильной работы перекомпиляция проекта с определённым макросом __FXALLOC_TURBO. Максимально уменьшаются
* метаданные(до 16 байт, 2 указателя + выравнивание(если x86)), остаётся доступен только режим поверхностного анализа:
* блоков всего, праллоцированно и выделено дополнительно.
*
* \note Во всех режимах аллокатор работаетпо принципу LIFO на атомиках(без блокировок), все головы стеков выровнены по линии L1,
* адреса блоков и пользовательских данных кратны 16-ти.
* \p
* Подробное описание процесса разработки интерфейса и аллокатора в целом можно найти в файле:
* `neurox/ccpp/fxalloc/DIARY.md`
*
* */
@@ -79,9 +108,69 @@ extern "C" {
#else
#error "Unsupported compiler. Only Clang, GCC >=5.0 and MSVC VS 2022+ support _Atomic in C11"
#endif
/*=================================================================================================
Установки по умолчанию
*=================================================================================================*/
/**
* @brief Это перечисление устанавливает настройки аллокатора по умолчанию
*
* @b FXALLOC_GRADE_STEP_SHIFT - шаг размера блоков, напрямую влияет на количество грейдов
* и суммарный размер метаданных всех гоейдов пула для каждого потока.
*
* @b FXALLOC_LIFO_HEAD_ALIGN - настраивается для вашего процессора по размеру
* кеша @b L1. Значение по умолчанию @b 64. Действет на весь процесс, для изменения необходима
* рекомпиляция.
*
* @b FXALLOC_MAX_GRADE_SIZE - Ограничитель максимаьного размера грейда
* Значение по умолчанию @b 0x10000 = @b 65'536 байт.
*
* @note
* @b Пример для @b FXALLOC_GRADE_STEP_SHIFT = 5, @b FXALLOC_MAX_GRADE_SIZE = 1024
* - Шаг размера: (1 << 5) = @b 32 байта: [32, 64, 96, 128...]
* - Количество грейдов: 1024 / 32 = @b 32
*/
typedef enum eFXAllocDefaultConfig {
/**
* Количество сдвигов определяющее шаг размера блока: (1 << 6) = 64\n
* Значение по умолчанию: @b 6.
*/
FXALLOC_GRADE_STEP_SHIFT = 6,
/**
* Выравние головы стека свободных блоков по линии кеша L1\n
* Значение по умолчанию: @b 64.
*/
FXALLOC_LIFO_HEAD_ALIGN = 64,
/**
* Ограничитель максимаьного размера блока\n
* Значение по умолчанию: @b 65'536 байт.
*/
FXALLOC_MAX_GRADE_SIZE = 0x10000,
} eFXAllocDefaultConfig;
/*=================================================================================================*/
/**
* @brief Перечисление режимов работы аллокатора
* @brief Варианты настройки алгоритма поиска подходящего грейда для данного потока
* В случае если первой в потоке вызывается функция @b `fxalloc` режим автоматически
* устанавливается в сдвиговый, т.к. Инициализируется пул согласно
* @b `FXALLOC_GRADE_STEP_SHIFT` в своём алгоритме функции сдвигового поиска опираются
* именно на это значение.
* В противном случае(первый вызов - `fxalloc_init`) вы можете сами задать тип поиска.
* Рекомендации под задачу:
* * Высокая вариативность - оставить градации по умолчанию откалибровав `FXALLOC_GRADE_STEP_SHIFT`
* * Низкая вариативность(очереди) - линейный поиск
* * Средняя вариативность(запросы и т.д.) - бираный поиск
*/
typedef enum eXFAllocSearchType {
FXSEARCH_AUTO, /// Выберется Бинарный/линейный в зависимости от длины массива градаций(>= 7)
FXSEARCH_LINEAR, /// Линейный поиск
FXSEARCH_BINARY, /// Бинарный поиск
FXSEARCH_SHIFTED, /// Поиск сдвигом вправо(`idx = (NBytes - 1) >> FXALLOC_GRADE_STEP_SHIFT;`)
} eXFAllocSearchType;
/**
* @brief Перечисление режимов работы аллокатора.
* @note Подробное описание статистики в см. в описании структуры `FXAllocGradeStat`
*/
typedef enum eFXAllocProfile {
FXALLOC_SPEED, ///< Максимальная производительность без статистики
@@ -90,51 +179,13 @@ extern "C" {
FXALLOC_GETPROFILE, ///< Используется для получения текущего профиля
} eFXAllocProfile;
/**
* @brief Задаёт шаг градаций по умолчанию используемый в изначальной версии
* `fxalloc()`. Градации будут заполнены для блоков с шагом в
* `1 << FXALLOC_DEFAULT_GRADE_STEP_SHIFT` до размера 65 535 байт(~1024 грейда),
* все блоки будут сохраняться в LIFO каждого грейда до конца работы потока.
* Такой режим предусмотрен для профилирования.
* @note Изменение шага напрямую влияет на количество грейдов и размер метаданных
* при увеличении на 1(7): шаг грейда - 128 байт, размер пула - 512 грейдов и т.д.
* при уменьшении на 1(5): шаг грейда - 32 байта, размер пула - 2048 грейдов и т.д.
* @details Если установить данный параметр 0 будет недоступен режим полного
* профилирования, статистика будет содержать только `malloced = N times`,
* `average_size = N bytes`, `min = N bytes` и `max = N bytes`.
* В случае по умолчанию можно будет получить более подробную информацию по
* каждому грейду и использованию памяти в нём. Не рекомендуется снижать параметр,
* т.к. это напрямую повлияет на размер метаданных пула.
*/
typedef enum eFXAllocConfig {
FXALLOC_GRADE_STEP_SHIFT = 6,///< left bit shifts (1 << 6) = 64 - hf
FXALLOC_LIFO_HEAD_ALIGN = 64,///< Задаёт выравнивание LIFO по L1 cache
} eFXAllocConfig;
/**
* @brief Варианты настройки алгоритма поиска грейдов для данного потока
* В случае если первой в потоке вызывается функция `fxalloc` режим автоматически
* устанавливается в сдвиговый, т.к. Инициализируется пул согласно
* `FXALLOC_GRADE_STEP_SHIFT` в своём алгоритме функции сдвигового поиска опираются
* именно на это значение.
* В противном случае(первый вызов - `fxalloc_init`) вы можете сами задать тип поиска.
* Рекомендации под задачу:
* * Высокая вариативность - оставить градации по умолчанию откалибровав `FXALLOC_GRADE_STEP_SHIFT`
* * Низкая вариативность(очереди) - линейный поиск
* * Средняя вариативность(запросы и т.д.) - бираный поиск
*/
typedef enum eXFAllocSearchType {
FXSEARCH_AUTO, ///< Выберется Бинарный/линейный в зависимости от длины массива градаций(>= 7)
FXSEARCH_LINEAR, ///< Линейный поиск
FXSEARCH_BINARY, ///< Бинарный поиск
FXSEARCH_SHIFTED, ///< Поиск сдвигом вправо(`idx = (NBytes - 1) >> FXALLOC_GRADE_STEP_SHIFT;`)
} eXFAllocSearchType;
/**
* @brief Структура преднастройки аллокатора задающая градации и количество блоков памяти.
* Массив должен быть отсортирован по возрастанию размера блока
* и заканчиваться элементом с `est_size = 0`
* @var +est_size: size_t - Предполагаемый размер блока
* @var +est_count: size_t - Предполагаемое количество блоков
* Поля:
* - +est_size: size_t - Предполагаемый размер блока;
* - +est_count: size_t - Предполагаемое количество блоков.
*/
typedef struct FXGrade {
const size_t est_size; ///< Предполагаемый размер блока
@@ -142,24 +193,41 @@ extern "C" {
} FXGrade;
/**
* @brief Переключает режимы работы алокатора
* `FXALLOC_SPEED` - Максимальная производительность без статистики
* `FXALLOC_SUMMARY` - Поверхностная статистика
* `FXALLOC_FULL` - Глубокий анализ расхода памяти
* @retval `1` при успешном переключении
* @retval `0` при ошибке(не вероятно)
*/
int fxalloc_profile(eFXAllocProfile Profile);
* @brief Структура настройки потока
*
* - +name: const char*: Указатель на название потока. Может быть NULL.
*
* - +grades: const FXGrade: Указатель на массив настроенных грейдов. Может быть NULL.
*
* - +profile: eFXAllocProfile: Режим потока один из:
* - FXALLOC_SPEED
* - FXALLOC_SUMMARY
* - FXALLOC_SPEED.
*
* - +search_type: eFXSearchType: Алгоритм поиска подходящего блока, один из:
* - FXSEARCH_AUTO
* - FXSEARCH_LINEAR
* - FXSEARCH_BINARY
* - FXSEARCH_SHIFTED
*/
typedef struct FXAllocSetupThread {
const char* name; /// Название потока
const FXGrade* grades; /// Указатель на массив с настройками градаций
eFXAllocProfile profile; /// Профиль
eXFAllocSearchType search_type; /// Тип поиска
} FXAllocSetupThread;
/**
* @brief Инициализирует локальный пулл памяти исходя из заданных параметров блоков
* @param[in] Grades: const FXGrade* - Указатель на массив градаций
* @param[in] ThreadName: const char* - Наименование потока, используется при профилировании
* @param[in] SearchType: eXFAllocSearchType - Тип поиска по градациям
* в следующем виде: `[thread_id] 'thread_name': blocks: total=1024 used=64...`.
* Если передан `NULL` - выводится только ID потока, т.е.: `[thread_id]: ...`
* @brief Инициализирует локальный пул памяти исходя из заданных параметров блоков
* @note Блокирующий вызов
* @param[in] Options: FXAllocSetupThread*: Указатель на структуру настроек.
*
* @returns int - внутренний идентификатор потока(порядковый номер), либо -1 в случае ошибки
* @retval (int)-1 - Ошибка, данные сохраняются в errno(ENOMEM || EINVAL), описание ошибки можно получить
* используя strerror(errno)
* @retval (int)>= 0 - порядковый номер потока использующего аллокатор FXAlloc
*/
int fxalloc_init(const FXGrade* Grades, const char* ThreadName, eXFAllocSearchType SearchType);
int fxalloc_init(FXAllocSetupThread* Options);
#ifndef _I_UNDERSTAND_THAT_I_SHOULD_NEVER_CHANGE_THESE_POINTERS_
/**
@@ -206,26 +274,105 @@ extern "C" {
void fxalloc_cleanup();
/**
* @brief Структурная единица отчёта
* @brief Структурная единица отчёта по каждому грейду
*
* @note В режиме @b `FXALLOC_SPEED` статистика не собирается
*
* Статистика по режимам:
* - @b FXALLOC_SUMMARY:
* - +block_size: uint32_t: размер блока(грейд)
* - +blocks_total: uint32_t: всего блоков
* - +blocks_preallocated: uint32_t: преаллоцировано блоков
* - +blocks_malloced: uint32_t: дополнительно выделено блоков
* - @b FXALLOC_FULL (дополнительно к SUMMARY):
* - +blocks_used: uint32_t: используется на данный момент
* - +data_min: uint32_t: минимальное использование
* - +data_max: uint32_t: максимальное использование
* - +data_avg: uint32_t: арифметическая средняя по грейду
*/
typedef struct FXAllocGradeStat {
uint32_t block_size; ///< Размер блока(грейд)
uint32_t blocks_total; ///< Всего блоков
uint32_t blocks_prealloced; ///< Преаллоцировано блоков
uint32_t blocks_malloced; ///< Блоков выделенных дополнительно
uint32_t blocks_used; ///< Блоков используется
uint32_t data_min; ///< Минимальный размер данных
uint32_t data_max; ///< Максимальный размер данных
uint32_t data_avg; ///< Средняя арифметическая `(data_1 + ... + data_N) / total` bytes
/* FXALLOC_SUMMARY + FXALLOC_FULL */
uint32_t block_size; /// Размер блока(грейд)
uint32_t blocks_total; /// Всего блоков
uint32_t blocks_prealloced; /// Преаллоцировано блоков
uint32_t blocks_malloced; /// Блоков выделенных дополнительно
/* FXALLOC_FULL */
uint32_t blocks_used; /// Блоков используется
uint32_t data_min; /// Минимальный размер данных
uint32_t data_max; /// Максимальный размер данных
uint32_t data_avg; /// Средняя арифметическая `(data_1 + ... + data_N) / total` bytes
} FXAllocGradeStat;
/**
* @brief Структурная елиница отчёта по потокам
* - +thread_name: const char*: Название потока
* - +profile: FXAllocGradeStat*: Данные профилирования по каждому грейду
* - +thread_id: size_t: Внутренний идентификатор потока(вощвращается fxalloc_init)
* - +ngrades: size_t: Количество градаций.
*/
typedef struct FXAllocStatistics {
const char* thread_name; ///<
FXAllocGradeStat* profile; ///<
size_t thread_id; ///<
size_t ngrades; ///<
const char* thread_name; /// Название потока
FXAllocGradeStat* profile; /// Данные профилирования по каждому грейду
size_t thread_id; /// Внутренний идентификатор потока
size_t ngrades; /// Количество градаций
} FXAllocStatistics;
/**
* @brief Переключает режимы работы алокатора для всего роцесса
*
* @param Profile: eFXAllocProfile: режим профилирования
* `FXALLOC_SPEED` - Максимальная производительность без статистики
* `FXALLOC_SUMMARY` - Поверхностная статистика
* `FXALLOC_FULL` - Глубокий анализ расхода памяти
*
* @param Callback: void(*)(FXAllocStatistics*): указатель на функцию-обработчик данных.
* При передаче NULL аргумент Profile будет проигнорирован.
*
* @param MemoryState: FXAllocStatistics**: Массив указателей на статиистику для каждого грейда. Нулевой
* указатель в массиве обозначает конецмассива: MemoryState[N] == NULL. После обработки данных профилирования
* следует использовать free(MemoryState) для освобождения памяти.
*
* @note При `Profile != FXALLOC_SPEED && Callback == NULL` возвращает `(int)0`, `errno` устанавоивается в `EINVAL`
*
* @return int
* @retval `1` при успешном переключении
* @retval `0` при ошибке, errno == EINVAL, описание strerror(errno).
*/
int fxalloc_profile(eFXAllocProfile Profile, void(*Callback)(FXAllocStatistics** MemoryState));
/**
* @brief Переключает режим работы алокатора для потока указанного в ThreadID
*
* @param ThreadID: int: Внутренний идентификатор потока возвращённый функцией fxalloc_init()
*
* @param Profile: eFXAllocProfile: режим профилирования
* `FXALLOC_SPEED` - Максимальная производительность без статистики
* `FXALLOC_SUMMARY` - Поверхностная статистика
* `FXALLOC_FULL` - Глубокий анализ расхода памяти
*
* @param Callback: void(*)(FXAllocStatistics*): указатель на функцию-обработчик данных.
* При передаче NULL аргумент Profile будет проигнорирован.
*
* @param MemoryState: FXAllocStatistics**: Массив указателей на статиистику для каждого грейда. Нулевой
* указатель в массиве обозначает конецмассива: MemoryState[N] == NULL. После обработки данных профилирования
* следует использовать free(MemoryState) для освобождения памяти.
*
* @note При `Profile != FXALLOC_SPEED && Callback == NULL` возвращает `(int)0`, `errno` устанавоивается в `EINVAL`
*
* @return int
* @retval `1` при успешном переключении
* @retval `0` при ошибке, errno == EINVAL, описание strerror(errno).
*/
int fxalloc_profile_thread(int ThreadID, eFXAllocProfile Profile, void(*Callback)(FXAllocStatistics** MemoryState));
/**
* @brief Функция очистки всей занятой памяти.
* @warning Блокирующий вызов, должен быть вызван перед завершением процесса/приложения!
*
*/
void fxalloc_finalize();
#ifdef __cplusplus
}
#endif //__cplusplus